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.boot19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/boot/utility.boot b/src/boot/utility.boot
index 0ce3362a..a7545688 100644
--- a/src/boot/utility.boot
+++ b/src/boot/utility.boot
@@ -33,13 +33,18 @@
import initial_-env
namespace BOOTTRAN
module utility (objectMember?, symbolMember?, stringMember?,
- charMember?, scalarMember?, listMember?, reverse!)
+ charMember?, scalarMember?, listMember?, reverse, reverse!)
--% membership operators
objectMember?(x,l) ==
- cons? l => sameObject?(x,first l) or objectMember?(x,rest l)
- sameObject?(x,l)
+ repeat
+ l = nil => return false
+ cons? l =>
+ sameObject?(x,first l) => return true
+ l := rest l
+ return sameObject?(x,l)
+
symbolMember?(s,l) ==
repeat
@@ -83,6 +88,14 @@ listMember?(x,l) ==
--% list reversal
+reverse l ==
+ r := nil
+ repeat
+ cons? l =>
+ r := [first l,:r]
+ l := rest l
+ return r
+
reverse! l ==
l1 := nil
repeat