diff demo/list.ur @ 397:4d519baf357c

ListShop skeleton
author Adam Chlipala <adamc@hcoop.net>
date Tue, 21 Oct 2008 12:06:35 -0400
parents
children 7ef4b2911b09
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/demo/list.ur	Tue Oct 21 12:06:35 2008 -0400
@@ -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