(defprimitive < < 2)
今の実装だと、<が素のschemeの#t, #f を返すので、俺実装系のTrue、Falseを返すようにしなさい。
俺実装系では真偽値として#t, #fではなくt, fを使うようにすると、こう書けます。
(definitial t #t) (definitial f #f) (defprimitive > (lambda (x y) (if (> x y) 't 'f)) 2) (defprimitive < (lambda (x y) (if (< x y) 't 'f)) 2)
あとはevaluateの中に手を入れる必要があるのですが、戻り値のt、fを一回lookupしたら#t, #fになるので、やっつけ実装ですがこうしたら動きました。
[(if) (if (lookup (evaluate (cadr e) env) env)