From c05d35e8dd1ebbc371d7c9239d788ddf844eae31 Mon Sep 17 00:00:00 2001 From: Chouser Date: Sat, 14 Feb 2015 15:18:18 -0500 Subject: forth: Get rid of car/cdr style lists Rename MalArray to MalList --- forth/step2_eval.fs | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) (limited to 'forth/step2_eval.fs') 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 -- cgit v1.2.3