summaryrefslogtreecommitdiff
path: root/demo/list.ur
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-11-20 11:34:36 -0500
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-11-20 11:34:36 -0500
commiteb171fceba46cbe600d8e29adc526e86719cdc4f (patch)
treebe1fb9f820200f6d2620e1e597ff809b1f438d29 /demo/list.ur
parent55ad38ebb900b84fcfdeefe68678348e1cd3c36c (diff)
Some demo improvements
Diffstat (limited to 'demo/list.ur')
-rw-r--r--demo/list.ur30
1 files changed, 18 insertions, 12 deletions
diff --git a/demo/list.ur b/demo/list.ur
index c2dfce22..107bf92c 100644
--- a/demo/list.ur
+++ b/demo/list.ur
@@ -1,15 +1,21 @@
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) =
+ let
+ fun length' (ls : list t) (acc : int) =
+ case ls of
+ Nil => acc
+ | Cons (_, ls') => length' ls' (acc + 1)
+ in
+ length' ls 0
+ end
-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
+fun rev (t ::: Type) (ls : list t) =
+ let
+ fun rev' (ls : list t) (acc : list t) =
+ case ls of
+ Nil => acc
+ | Cons (x, ls') => rev' ls' (Cons (x, acc))
+ in
+ rev' ls Nil
+ end