From b92a24c08953125b3a6352abf1123163411cedc0 Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Sat, 17 Aug 2019 10:21:08 +0100 Subject: [PATCH] Woohoo!! Only got APPLY and EVAL yet to test! --- src/beowulf/eval.clj | 2 +- test/beowulf/bootstrap_test.clj | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) 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)))))