;
: add-prim ( args -- )
- nil objeq? if
+ 2dup nil objeq? if
+ 2drop
0 number-type
else
2dup cdr recurse drop
: true? ( boolobj -- bool )
false? invert ;
-: applicaion? ( obj -- obj bool)
+: application? ( obj -- obj bool)
pair-type istype? ;
: operator ( obj -- operator )
cdr ;
: nooperands? ( operands -- bool )
- cdr nil objeq? ;
+ nil objeq? ;
: first-operand ( operands -- operand )
car ;
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 )