SigScheme開発録 (6) - 0.0.0公開 -
この辺りでとりあえず公開します。肉の日に出そうと思ってたんですけど、gcのバグが取れんかった。makeファイルもまだべた書きです。SIODとの違いとしては、tagged pointerを使っている点とR5RS互換(にしようとしている)点かな。後はincremental Mark&Sweepを実装したい。
$ make $ ./sscm <filename>
でそれっぽい出力が出ます。まだまだ出力がデバッグ用ですけど、勘弁して下さい。
ubuntu% cat a.scm (define count (let ((n 0)) (lambda () (set! n (+ n 1))))) (count) (count) ubuntu% ./sscm a.scm [ gc start ] scm[0] corrected = 33 str[0] corrected = 0 [ gc start ] scm[0] corrected = 0 str[0] corrected = 0 str[1] corrected = 20 [ gc start ] scm[0] corrected = 0 scm[1] corrected = 65 str[0] corrected = 0 str[1] corrected = 0 [ gc start ] scm[0] corrected = 0 scm[1] corrected = 0 str[0] corrected = 0 str[1] corrected = 0 str[2] corrected = 11 ---------------------------------------- sym = count ---------------------------------------- ---------------------------------------- [ Int ] value = 1 ---------------------------------------- ---------------------------------------- [ Int ] value = 2 ----------------------------------------
gcも一応動いているっぽいですね。文字列処理、do文case文、port回りを次に実装予定。charとかvectorとかマクロとか多値とかcontinuationはサポート出来るんだろうか...もう型が余ってないのだけれども...現在約4000行。