diff options
Diffstat (limited to 'src/boot/utility.boot')
-rw-r--r-- | src/boot/utility.boot | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/boot/utility.boot b/src/boot/utility.boot index 8b1f242f..bde1090b 100644 --- a/src/boot/utility.boot +++ b/src/boot/utility.boot @@ -33,7 +33,8 @@ import initial_-env namespace BOOTTRAN module utility (objectMember?, symbolMember?, stringMember?, - charMember?, scalarMember?, listMember?, reverse, reverse!, lastNode) + charMember?, scalarMember?, listMember?, reverse, reverse!, + lastNode, append!, copyList) --% membership operators @@ -112,3 +113,23 @@ lastNode l == while l is [.,:l'] and cons? l' repeat l := l' l + +--% list copying +copyList l == + not cons? l => l + l' := t := [first l] + repeat + l := rest l + cons? l => + t.rest := [first l] + t := rest t + t.rest := l + return l' + +--% append + +append!(x,y) == + x = nil => y + y = nil => x + lastNode(x).rest := y + x |