diff options
author | Adam Chlipala <adamc@hcoop.net> | 2009-12-05 14:01:34 -0500 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2009-12-05 14:01:34 -0500 |
commit | 6b9b07746ffdd3e3cec6e81287f1334038a41092 (patch) | |
tree | 27acc16bb8d3b12293fbbae8b833d7ff2e731aa9 /lib/ur/list.ur | |
parent | 97c20e02541006584c5c2da552dffce23ef18f38 (diff) |
Represent FFI function names as strings, to deal with cross-file recursion
Diffstat (limited to 'lib/ur/list.ur')
-rw-r--r-- | lib/ur/list.ur | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/lib/ur/list.ur b/lib/ur/list.ur index 58f9e23e..3abd8b97 100644 --- a/lib/ur/list.ur +++ b/lib/ur/list.ur @@ -21,7 +21,7 @@ val eq = fn [a] (_ : eq a) => mkEq eq' end -fun foldl [a] [b] f = +fun foldl [a] [b] (f : a -> b -> b) = let fun foldl' acc ls = case ls of @@ -31,6 +31,18 @@ fun foldl [a] [b] f = foldl' end +val rev = fn [a] => + let + fun rev' acc (ls : list a) = + case ls of + [] => acc + | x :: ls => rev' (x :: acc) ls + in + rev' [] + end + +fun foldr [a] [b] f (acc : b) (ls : list a) = foldl f acc (rev ls) + fun foldlAbort [a] [b] f = let fun foldlAbort' acc ls = @@ -54,16 +66,6 @@ val length = fn [a] => length' 0 end -val rev = fn [a] => - let - fun rev' acc (ls : list a) = - case ls of - [] => acc - | x :: ls => rev' (x :: acc) ls - in - rev' [] - end - fun foldlMapAbort [a] [b] [c] f = let fun foldlMapAbort' ls' acc ls = |