diff lib/ur/monad.urs @ 1093:8d3aa6c7cee0

Make summary unification more conservative; infer implicit arguments after applications
author Adam Chlipala <adamc@hcoop.net>
date Sat, 26 Dec 2009 11:56:40 -0500
parents 37dd42935dad
children ad15700272f6
line wrap: on
line diff
--- a/lib/ur/monad.urs	Fri Dec 25 10:48:02 2009 -0500
+++ b/lib/ur/monad.urs	Sat Dec 26 11:56:40 2009 -0500
@@ -14,7 +14,7 @@
                 -> [[nm] ~ rest] =>
                 tf t -> tr rest -> m (tr ([nm = t] ++ rest)))
             -> tr []
-            -> r :: {K} -> folder r -> $(map tf r) -> m (tr r)
+            -> r ::: {K} -> folder r -> $(map tf r) -> m (tr r)
 
 val foldR2 : K --> m ::: (Type -> Type) -> monad m
              -> tf1 :: (K -> Type) -> tf2 :: (K -> Type)
@@ -23,7 +23,7 @@
                  -> [[nm] ~ rest] =>
                        tf1 t -> tf2 t -> tr rest -> m (tr ([nm = t] ++ rest)))
              -> tr []
-             -> r :: {K} -> folder r -> $(map tf1 r) -> $(map tf2 r) -> m (tr r)
+             -> r ::: {K} -> folder r -> $(map tf1 r) -> $(map tf2 r) -> m (tr r)
 
 val foldR3 : K --> m ::: (Type -> Type) -> monad m
              -> tf1 :: (K -> Type) -> tf2 :: (K -> Type) -> tf3 :: (K -> Type)
@@ -32,16 +32,16 @@
                  -> [[nm] ~ rest] =>
                        tf1 t -> tf2 t -> tf3 t -> tr rest -> m (tr ([nm = t] ++ rest)))
              -> tr []
-             -> r :: {K} -> folder r -> $(map tf1 r) -> $(map tf2 r) -> $(map tf3 r) -> m (tr r)
+             -> r ::: {K} -> folder r -> $(map tf1 r) -> $(map tf2 r) -> $(map tf3 r) -> m (tr r)
 
 val mapR : K --> m ::: (Type -> Type) -> monad m
            -> tf :: (K -> Type)
            -> tr :: (K -> Type)
            -> (nm :: Name -> t :: K -> tf t -> m (tr t))
-           -> r :: {K} -> folder r -> $(map tf r) -> m ($(map tr r))
+           -> r ::: {K} -> folder r -> $(map tf r) -> m ($(map tr r))
 
 val mapR2 : K --> m ::: (Type -> Type) -> monad m
             -> tf1 :: (K -> Type) -> tf2 :: (K -> Type)
             -> tr :: (K -> Type)
             -> (nm :: Name -> t :: K -> tf1 t -> tf2 t -> m (tr t))
-            -> r :: {K} -> folder r -> $(map tf1 r) -> $(map tf2 r) -> m ($(map tr r))
+            -> r ::: {K} -> folder r -> $(map tf1 r) -> $(map tf2 r) -> m ($(map tr r))