summaryrefslogtreecommitdiffstats
path: root/samples/list.slam
diff options
context:
space:
mode:
Diffstat (limited to 'samples/list.slam')
-rw-r--r--samples/list.slam27
1 files changed, 27 insertions, 0 deletions
diff --git a/samples/list.slam b/samples/list.slam
new file mode 100644
index 0000000..c0fa5da
--- /dev/null
+++ b/samples/list.slam
@@ -0,0 +1,27 @@
+define prepend
+ $prepend_val !
+ $prepend_phrase !
+ '[ $prepend_val @ $prepend_phrase @ unphrase '] phrase
+ $prepend_val forget $prepend_phrase forget
+ ;
+
+define append
+ $append_val !
+ $append_phrase !
+ '[ $append_phrase @ unphrase $append_val @ '] phrase
+ $append_val forget $append_phrase forget
+ ;
+
+define stack-empty? stack-size 0 eq? ;
+
+define ..
+ [ stack-empty? not ]
+ [ . ] loop
+ ;
+
+[ 2 3 ] 1 prepend .
+[ 2 3 ] 4 append .
+[ 1 2 3 ] pop $1 ! pop $2 ! pop $3 !
+$1 ?
+$2 ?
+$3 ?