aboutsummaryrefslogtreecommitdiff
path: root/forth/step2_eval.fs
diff options
context:
space:
mode:
authorChouser <chouser@n01se.net>2015-02-14 15:18:18 -0500
committerChouser <chouser@n01se.net>2015-02-21 13:22:44 -0500
commitc05d35e8dd1ebbc371d7c9239d788ddf844eae31 (patch)
treef444aff987556c84920590beb76692f0c2887fdf /forth/step2_eval.fs
parent69972a8399efe4abb8567526e90262e131f90d26 (diff)
downloadmal-c05d35e8dd1ebbc371d7c9239d788ddf844eae31.tar.gz
mal-c05d35e8dd1ebbc371d7c9239d788ddf844eae31.zip
forth: Get rid of car/cdr style lists
Rename MalArray to MalList
Diffstat (limited to 'forth/step2_eval.fs')
-rw-r--r--forth/step2_eval.fs31
1 files changed, 9 insertions, 22 deletions
diff --git a/forth/step2_eval.fs b/forth/step2_eval.fs
index 33ceb4e..6a9af72 100644
--- a/forth/step2_eval.fs
+++ b/forth/step2_eval.fs
@@ -44,38 +44,25 @@ MalSymbol
endif ;;
drop
-MalArray
- extend mal-eval { env ary -- val }
+MalList
+ extend mal-eval { env list -- val }
\ Pass args on dictionary stack (!)
- \ TODO: consider allocate and free of a real MalArray instead
+ \ TODO: consider allocate and free of a real MalList instead
here { val-start }
- ary MalArray/start @ { expr-start }
- ary MalArray/count @ 0 ?do
+ list MalList/start @ { expr-start }
+ list MalList/count @ 0 ?do
env expr-start i cells + @ mal-eval ,
loop
val-start cell+ here val-start - cell / 1- val-start @ ( argv argc MalFn )
invoke
val-start here - allot ;;
- extend mal-eval-ast { env ary -- ary }
+ extend mal-eval-ast { env list -- list }
here
- ary MalArray/start @ { expr-start }
- ary MalArray/count @ 0 ?do
+ list MalList/start @ { expr-start }
+ list MalList/count @ 0 ?do
env expr-start i cells + @ mal-eval ,
loop
- here>MalArray ;;
-drop
-
-MalList
- extend mal-eval-ast { env list -- ary }
- here
- list
- begin ( list )
- dup mal-nil <>
- while
- env over MalList/car @ mal-eval ,
- MalList/cdr @
- repeat
- drop here>MalArray ;;
+ here>MalList ;;
drop
MalVector