aboutsummaryrefslogtreecommitdiff
path: root/src/boot/utility.boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/boot/utility.boot')
-rw-r--r--src/boot/utility.boot23
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