ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

Lisp in Small Pieces Exercise 1.5 boolean

(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)