comparison lib/ur/monad.urs @ 1312:726f0caeea3f

Monad.appR
author Adam Chlipala <adam@chlipala.net>
date Tue, 19 Oct 2010 11:51:53 -0400
parents f0909fb3848f
children 0bf73c3e4563
comparison
equal deleted inserted replaced
1311:5337adf33a4a 1312:726f0caeea3f
59 -> [[nm] ~ rest] => 59 -> [[nm] ~ rest] =>
60 tf t -> tr rest -> m (tf' t * tr ([nm = t] ++ rest))) 60 tf t -> tr rest -> m (tf' t * tr ([nm = t] ++ rest)))
61 -> tr [] 61 -> tr []
62 -> r ::: {K} -> folder r -> $(map tf r) -> m ($(map tf' r) * tr r) 62 -> r ::: {K} -> folder r -> $(map tf r) -> m ($(map tf' r) * tr r)
63 63
64 val appR : K --> m ::: (Type -> Type) -> monad m
65 -> tf :: (K -> Type)
66 -> (nm :: Name -> t :: K -> tf t -> m unit)
67 -> r ::: {K} -> folder r -> $(map tf r) -> m unit
68
64 val appR2 : K --> m ::: (Type -> Type) -> monad m 69 val appR2 : K --> m ::: (Type -> Type) -> monad m
65 -> tf1 :: (K -> Type) -> tf2 :: (K -> Type) 70 -> tf1 :: (K -> Type) -> tf2 :: (K -> Type)
66 -> (nm :: Name -> t :: K -> tf1 t -> tf2 t -> m unit) 71 -> (nm :: Name -> t :: K -> tf1 t -> tf2 t -> m unit)
67 -> r ::: {K} -> folder r -> $(map tf1 r) -> $(map tf2 r) -> m unit 72 -> r ::: {K} -> folder r -> $(map tf1 r) -> $(map tf2 r) -> m unit