Mercurial > urweb
diff lib/ur/list.ur @ 800:e92cfac1608f
Proper lifting of MonoEnv stored expressions; avoidance of onchange clobbering
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Thu, 14 May 2009 13:18:31 -0400 |
parents | 6271f0e3c272 |
children | 066493f7f008 |
line wrap: on
line diff
--- a/lib/ur/list.ur Thu May 14 11:04:56 2009 -0400 +++ b/lib/ur/list.ur Thu May 14 13:18:31 2009 -0400 @@ -39,3 +39,13 @@ in mapX' end + +fun mapM (m ::: (Type -> Type)) (_ : monad m) (a ::: Type) (b ::: Type) f = + let + fun mapM' acc ls = + case ls of + [] => acc + | x :: ls => mapM' (x' <- f x; ls' <- acc; return (x' :: ls')) ls + in + mapM' (return []) + end