JavaでSchemeを作ってます。

LISP系をもう少し、しっかり理解していたほうがいいと思い、JavaSchemeを作ってます。
魔術師本で、SchemeによるSchemeの実装があるので、それを眺めながらJavaに移植してます。
つまり、JavaによるSchemeの実装になります。
だいぶ動くようになりました。再帰もできるし、カリー化もできます。

; 数値 x をradix進数の文字列にする。
(define (adic-number radix)
    (define (to-char x)
        (substring "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" x (+ x 1)))
    (define (sub x)
        (cond
            ((< x 0)
                (string-append "-" (sub (abs x))))
            ((< x radix)
                (to-char x))
            (else
                (string-append
                    (sub (quotient x radix))
                    (to-char (remainder x radix))))))
    sub)

((adic-number 16) 100)              ; => "64"
((adic-number 16) 0)                ; => "0"
((adic-number 16) -255)             ; => "-FF"
(define toHexString (adic-number 16))
(toHexString 4095)                  ; => "FFF"
(define toBinString (adic-number 2))
(toBinString 4095)                  ; => "111111111111"