aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/ur/list.ur
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2010-11-21 15:43:24 -0500
committerGravatar Adam Chlipala <adam@chlipala.net>2010-11-21 15:43:24 -0500
commit4f2c619bb0971153c518f120c8911ce3a94f783d (patch)
treedce4ca25e55d3b9903a007859753068db4756515 /lib/ur/list.ur
parent61c8fdf76c28f65b8b483f68d2d1f5597fdf58ce (diff)
Fix a bug in C list unurlification
Diffstat (limited to 'lib/ur/list.ur')
-rw-r--r--lib/ur/list.ur14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/ur/list.ur b/lib/ur/list.ur
index 71d8fa98..354ef132 100644
--- a/lib/ur/list.ur
+++ b/lib/ur/list.ur
@@ -308,6 +308,20 @@ fun sort [a] (gt : a -> a -> bool) (ls : t a) : t a =
sort' ls
end
+val nth [a] =
+ let
+ fun nth (ls : list a) (n : int) : option a =
+ case ls of
+ [] => None
+ | x :: ls' =>
+ if n <= 0 then
+ Some x
+ else
+ nth ls' (n-1)
+ in
+ nth
+ end
+
fun assoc [a] [b] (_ : eq a) (x : a) =
let
fun assoc' (ls : list (a * b)) =