global-env fetchobj define-var
;
-: add-prim ( args -- )
- nil objeq? if
+:noname ( args -- )
+ 2dup nil objeq? if
+ 2drop
0 number-type
else
2dup cdr recurse drop
-rot car drop
+ number-type
then
-;
-
-' add-prim make-primitive +
+; make-primitive +
\ }}}
nextchar [char] - = ;
: number? ( -- bool )
- digit? minus? or false = if
- false
- exit
+ minus? if
+ inc-parse-idx
+
+ delim? if
+ dec-parse-idx
+ false exit
+ else
+ dec-parse-idx
+ then
+ else
+ digit? false = if
+ false exit
+ then
then
push-parse-idx
: 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 )