JavaでSchemeを作ってます。
LISP系をもう少し、しっかり理解していたほうがいいと思い、JavaでSchemeを作ってます。
魔術師本で、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"