Scheme Compiler の勉強(41) - string 実装
特に問題無い、はず。
gosh> (let ((s (make-string 5))) (string-set! s 0 #\H) (string-set! s 1 #\e) (string-set! s 2 #\l) (string-set! s 3 #\l) (string-set! s 4 #\o) s) "Hello" gosh> (run-program '(let ((s (make-string 5))) (string-set! s 0 #\H) (string-set! s 1 #\e) (string-set! s 2 #\l) (string-set! s 3 #\l) (string-set! s 4 #\o) s)) "\"Hello\"\n" gosh>
むしろ実装中に、分割していた印字用のライブラリが動かなくなっていて参った。分割しなくてもいいライブラリ(ランタイム)を分割していたためで、早すぎる最適化、の一種かも。
分けるべきではなかったかもしれないけど、まあしょうがない。今後は分割するときにも良く考えよう。
ついでに cond を実装。これは無いとコンパイラ自身の拡張が面倒すぎるため。