The Lambda Lab
/
projects
/
scheme.forth.jl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed fixnum detection in parser.
[scheme.forth.jl.git]
/
scheme.4th
diff --git
a/scheme.4th
b/scheme.4th
index
5c8f57d
..
8da2772
100644
(file)
--- a/
scheme.4th
+++ b/
scheme.4th
@@
-277,17
+277,16
@@
global-env setobj
global-env fetchobj define-var
;
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
0 number-type
else
2dup cdr recurse drop
-rot car drop
+ number-type
then
-;
-
-' add-prim make-primitive +
+; make-primitive +
\ }}}
\ }}}
@@
-374,9
+373,19
@@
parse-idx-stack parse-idx-sp !
nextchar [char] - = ;
: number? ( -- bool )
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
then
push-parse-idx
@@
-821,7
+830,7
@@
defer eval
: true? ( boolobj -- bool )
false? invert ;
: true? ( boolobj -- bool )
false? invert ;
-: applicaion? ( obj -- obj bool)
+: applica
t
ion? ( obj -- obj bool)
pair-type istype? ;
: operator ( obj -- operator )
pair-type istype? ;
: operator ( obj -- operator )
@@
-831,7
+840,7
@@
defer eval
cdr ;
: nooperands? ( operands -- bool )
cdr ;
: nooperands? ( operands -- bool )
-
cdr
nil objeq? ;
+ nil objeq? ;
: first-operand ( operands -- operand )
car ;
: first-operand ( operands -- operand )
car ;
@@
-840,7
+849,15
@@
defer eval
cdr ;
: list-of-vals ( args env -- vals )
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 )
;
:noname ( obj env -- result )