summaryrefslogtreecommitdiff
path: root/week3/camil/StdStack.icl
diff options
context:
space:
mode:
Diffstat (limited to 'week3/camil/StdStack.icl')
-rw-r--r--week3/camil/StdStack.icl32
1 files changed, 32 insertions, 0 deletions
diff --git a/week3/camil/StdStack.icl b/week3/camil/StdStack.icl
new file mode 100644
index 0000000..25ff265
--- /dev/null
+++ b/week3/camil/StdStack.icl
@@ -0,0 +1,32 @@
+implementation module StdStack
+
+import StdEnv
+
+:: Stack a :== [a]
+
+newStack :: (Stack a)
+newStack = []
+
+push :: a (Stack a) -> (Stack a)
+push a s = s ++ [a]
+
+pop
+
+Start = ( "s0 = newStack = ", s0,'\n'
+ , "s1 = push 1 s0 = ", s1,'\n'
+ , "s2 = pushes [2..5] s1 = ",s2,'\n'
+ , "s3 = pop s2 = ", s3,'\n'
+ , "s4 = popn 3 s3 = ", s4,'\n'
+ , "s5 = top s4 = ", s5,'\n'
+ , "s6 = topn 3 s2 = ", s6,'\n'
+ , "s7 = elements s2 = ", s7,'\n'
+ )
+where
+ s0 = newStack
+ s1 = push 1 s0
+ s2 = pushes [2..5] s1
+ s3 = pop s2
+ s4 = popn 3 s3
+ s5 = top s4
+ s6 = topn 3 s2
+ s7 = elements s2