>>290
こういうの作ったけど、使う?

windows-name->scheme-name
windows式の名前をschemeの一般的な名前に変換する。
ascii/unicodeを識別する、最後のA/W は 無くなる。

例)
  CreateWindowEx -> create-window-ex
  ReleaseDC -> release-dc
  WSAGetLastError -> wsaget-last-error
最後のがwsa-get-last-errorにならないところがちょっといい加減だけど

(define (windows-name->scheme-name s)
  (assert (string? s))
  (let loop ((cs (string->list s)) (r '()) (isupper #f))
    (if (pair? cs)
        (if (char-upper-case? (car cs))
            (loop (cdr cs)
                  (cons (char-downcase (car cs))
                        (if (and (pair? r)
                                 (not isupper))
                            (cons #\- r)
                            r))
                  #t)
            (loop (cdr cs) (cons (car cs) r) #f) )
        (string->symbol
          (list->string
            (reverse!
              (if (and (> (length r) 2) ; 〜 -a or -w
                       isupper
                       (or (char=? (car r) #\a) (char=? (car r) #\w))
                       (char=? (cadr r) #\-)) ; 〜A -> 〜
                  (list-tail r 2)
                  r )))))))