Scheme Compiler の勉強(28) - pair?, cons, car, cdr
ようやく pair?, cons, car, cdr のセットを実装。
gosh> (run-program '(pair? (cons 1 2))) "#t\n" gosh> (run-program '(car (cons 1 2))) "1\n" gosh> (run-program '(cons 1 2)) "<pair: 0x02800401>\n" gosh> (run-program '(letrec ((list (lambda (x y) (cons x (cons y ())))) (sum (lambda (lst cnt) (if (null? lst) cnt (sum (cdr lst) (fx+ (car lst) cnt)))))) (sum (list 3 4) 0))) "7\n" ;;
TODO としてエラーチェックと型チェックとメモリ範囲のチェックその他その他。あと、今のところ runtime.c で適当に表示しているだけなので、cons の表示が適当。うーん、C でコンスセルの表示なんて書きたくないなぁ。どこで間違ってるのかわからなくなりそうなので。scheme で書くのだろうか。
つぎは closure か。勉強勉強。