aboutsummaryrefslogtreecommitdiffhomepage
path: root/demo/list.ur
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-10-21 12:06:35 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-10-21 12:06:35 -0400
commita23f12953a60c8f8d663266a9644a08a905b7b36 (patch)
tree017e4ed05769d4fff43b3ecfef4cef440d68653a /demo/list.ur
parentcd8ba90217f6ed7efbf4882b4dcd8e199e510fbb (diff)
ListShop skeleton
Diffstat (limited to 'demo/list.ur')
-rw-r--r--demo/list.ur15
1 files changed, 15 insertions, 0 deletions
diff --git a/demo/list.ur b/demo/list.ur
new file mode 100644
index 00000000..c2dfce22
--- /dev/null
+++ b/demo/list.ur
@@ -0,0 +1,15 @@
+datatype list t = Nil | Cons of t * list t
+
+fun length' (t ::: Type) (ls : list t) (acc : int) =
+ case ls of
+ Nil => acc
+ | Cons (_, ls') => length' ls' (acc + 1)
+
+fun length (t ::: Type) (ls : list t) = length' ls 0
+
+fun rev' (t ::: Type) (ls : list t) (acc : list t) =
+ case ls of
+ Nil => acc
+ | Cons (x, ls') => rev' ls' (Cons (x, acc))
+
+fun rev (t ::: Type) (ls : list t) = rev' ls Nil