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/printer.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/printer.fs')
| -rw-r--r-- | forth/printer.fs | 40 |
1 files changed, 6 insertions, 34 deletions
diff --git a/forth/printer.fs b/forth/printer.fs index cc376e6..78ac197 100644 --- a/forth/printer.fs +++ b/forth/printer.fs @@ -72,50 +72,22 @@ MalNil drop s" nil" str-append ;; drop -: pr-buf-list-item ( list str-addr str-len -- list str-addr str-len) - rot dup MalList/cdr @ swap MalList/car @ 2swap rot pr-buf ; - MalList extend pr-buf -rot s" (" str-append ( list str-addr str-len ) rot pr-seq-buf s" )" str-append ;; - extend pr-seq-buf - \ currently assumes list chain through to the end - -rot pr-buf-list-item - begin ( list str-addr str-len ) - 2 pick mal-nil <> - while - a-space pr-buf-list-item - repeat - rot drop ;; - extend pr-pairs-buf - -rot pr-buf-list-item a-space pr-buf-list-item - begin ( list str-addr str-len ) - 2 pick mal-nil <> - while - s" , " str-append - pr-buf-list-item a-space pr-buf-list-item - repeat - rot drop ;; -drop - -MalArray - extend pr-buf - -rot s" (" str-append ( list str-addr str-len ) - rot pr-seq-buf - s" )" str-append ;; - extend pr-seq-buf { ary } - ary MalArray/start @ { start } + extend pr-seq-buf { list } + list MalList/start @ { start } start @ pr-buf - ary MalArray/count @ 1 ?do + list MalList/count @ 1 ?do a-space start i cells + @ pr-buf loop ;; - extend pr-pairs-buf { ary } - ary MalArray/start @ { start } + extend pr-pairs-buf { list } + list MalList/start @ { start } start @ pr-buf a-space start cell+ @ pr-buf - ary MalArray/count @ 2 / 1 ?do + list MalList/count @ 2 / 1 ?do s" , " str-append a-space start i 2 * cells + @ pr-buf a-space |
