diff --git a/src/beowulf/eval.clj b/src/beowulf/eval.clj index ab1be39..2604ade 100644 --- a/src/beowulf/eval.clj +++ b/src/beowulf/eval.clj @@ -198,7 +198,7 @@ See page 12 of the Lisp 1.5 Programmers Manual." [a y] (cond - (primitive-atom? y) (sub2 a y) + (= (primitive-atom? y) 'T) (sub2 a y) :else (make-cons-cell (sublis a (car y)) (sublis a (cdr y))))) diff --git a/test/beowulf/bootstrap_test.clj b/test/beowulf/bootstrap_test.clj index 7ac3936..6813ccc 100644 --- a/test/beowulf/bootstrap_test.clj +++ b/test/beowulf/bootstrap_test.clj @@ -218,3 +218,12 @@ 'D (gsp "((A . (M N)) (B . (CAR X)) (C . (QUOTE M)) (C . (CDR X)))")))] (is (= actual expected))))) + +(deftest sublis-tests + (testing "sublis" + (let [expected "(SHAKESPEARE WROTE (THE TEMPEST))" + actual (print-str + (sublis + (gsp "((X . SHAKESPEARE) (Y . (THE TEMPEST)))") + (gsp "(X WROTE Y)")))] + (is (= actual expected)))))