Updated README.
[scheme.forth.jl.git] / scheme.4th
index 244a33f..f8dd089 100644 (file)
@@ -139,11 +139,6 @@ variable nextfree
     cdr-cells + !
 ;
 
-: caar car car ;
-: cadr cdr car ;
-: cdar car cdr ;
-: cddr cdr cdr ;
-
 : nil 0 nil-type ;
 : nil? nil-type istype? ;
 
@@ -1058,7 +1053,7 @@ parse-idx-stack parse-idx-sp !
     quote-symbol tagged-list?  ;
 
 : quote-body ( quote-obj -- quote-body-obj )
-    cadr ;
+    cdr car ;
 
 : quasiquote? ( obj -- obj bool )
     quasiquote-symbol tagged-list? ;
@@ -1094,15 +1089,12 @@ parse-idx-stack parse-idx-sp !
 ;
 
 defer eval-quasiquote-item
-: eval-quasiquote-list ( env obj -- res )
-    nil? if
-        2swap 2drop exit
-    then
-
+: eval-quasiquote-pair ( env obj -- res )
     2over 2over ( env obj env obj )
 
-    cdr recurse
-    -2rot car ( cdritems env objcar )
+    cdr eval-quasiquote-item
+
+    -2rot car ( cdritem env objcar )
 
     unquote-splicing? if
         eval-unquote ( cdritems caritem )
@@ -1120,12 +1112,16 @@ defer eval-quasiquote-item
 ;
 
 :noname ( env obj )
+    nil? if
+        2swap 2drop exit
+    then
+
     unquote? if
         eval-unquote exit
     then
 
     pair-type istype? if
-        eval-quasiquote-list exit
+        eval-quasiquote-pair exit
     then
 
     2swap 2drop
@@ -1407,6 +1403,7 @@ hide env
         endcase
 ;
 
+( Simply evaluates the given procedure with expbody as its argument. )
 : macro-expand ( proc expbody -- result )
     2swap
     2dup procedure-body ( expbody proc procbody )