diff options
| author | Chouser <chouser@n01se.net> | 2015-02-14 15:18:18 -0500 |
|---|---|---|
| committer | Chouser <chouser@n01se.net> | 2015-02-21 13:22:44 -0500 |
| commit | c05d35e8dd1ebbc371d7c9239d788ddf844eae31 (patch) | |
| tree | f444aff987556c84920590beb76692f0c2887fdf /forth/step2_eval.fs | |
| parent | 69972a8399efe4abb8567526e90262e131f90d26 (diff) | |
| download | mal-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.fs | 31 |
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 |
