実装言語を何故かD言語からC言語へ移行してみました。かなりアッサリできました。いかに俺がD言語の機能を有効に利用していなかったかの証拠だと思った。 記号表は適当にオープンなハッシュテーブルで書いてみました。ハッシュ関数とか超適当。GCのタイミングはプログラムの終了時です。節子それGCやない、OSのメモリ管理や。 あとまあset!とlambdaをごにょごにょしてクロージャとか書けるようにしてみた。lambdaの実装がものごっそ適当。 > (define make-counter (lambda () ((lambda (c) (lambda () (set! c (+ c 1)) c)) 0))) #closure > (define c1 (make-counter)) #closure > (define c2 (make-counter)) #closure > (c1) 1 > (c