First primitive procedure working!
[scheme.forth.jl.git] / scheme.4th
index 5c8f57d..23c7f2b 100644 (file)
@@ -278,7 +278,8 @@ global-env setobj
 ;
 
 : add-prim ( args -- )
-    nil objeq? if
+    2dup nil objeq? if
+        2drop
         0 number-type
     else
         2dup cdr recurse drop
@@ -821,7 +822,7 @@ defer eval
 : true? ( boolobj -- bool )
     false? invert ;
 
-: applicaion? ( obj -- obj bool)
+: application? ( obj -- obj bool)
     pair-type istype? ;
 
 : operator ( obj -- operator )
@@ -831,7 +832,7 @@ defer eval
     cdr ;
 
 : nooperands? ( operands -- bool )
-    cdr nil objeq? ;
+    nil objeq? ;
 
 : first-operand ( operands -- operand )
     car ;
@@ -840,7 +841,15 @@ defer eval
     cdr ;
 
 : list-of-vals ( args env -- vals )
+    2swap
 
+    2dup nooperands? if
+        2swap 2drop
+    else
+        2over 2over first-operand 2swap eval
+        -2rot rest-operands 2swap recurse
+        cons
+    then
 ;
 
 :noname ( obj env -- result )