[doc update
ekmett@gmail.com**20090413084319
Ignore-this: eded8d4d8660e964b61b8630317be216
] {
hunk ./doc/html/monad-ran/Control-Monad-Ran-Cont.html 77
->datanewtype
Instances
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Cont'ContgetCont'getCont  | RanIso (Const r) (Const r) (ContrunCont' :: Cont'runCont :: ContRanIso (Const r) (Const r) (Cont r) | RanIso (Const r) (Const r) (Cont r) | | Cont | Control.Monad.Ran.Cont | Cont'ContgetCont'getContidCont | Control.Monad.Ran.Cont | mapCont | Control.Monad.Ran.Cont | resetControl.Monad.Ran.Cont | runCont' | Control.Monad.Ran.Cont | shift | Control.Monad.Ran.Cont | | withCont | Control.Monad.Ran.Cont | ( Cont
+ ( Cont(..)
hunk ./doc/html/monad-ran/src/Control-Monad-Ran-Cont.html 12
- , idCont
- , mapCont
- , withCont
- , shift
- , reset
- , Cont'(..)
- , runCont'
- , module Control.Monad.Cont.Class
- ) where
-
-import Control.Applicative
-import Control.Monad
-import Control.Monad.Ran.Codensity
-import Unsafe.Coerce
-import Control.Monad.Cont.Class
+ , module Control.Monad.Cont.Class
+ ) where
+
+import Control.Applicative
+import Control.Monad
+import Control.Monad.Cont.Class
+import Control.Monad.Ran
+import Control.Monad.Ran.Codensity
+
+
+newtype Cont r a = Cont { getCont :: Codensity (Const r) a }
+ deriving (Functor,Applicative,Monad,RanIso (Const r) (Const r))
+
+instance MonadCont (Cont r) where
+ callCC f = Cont (Codensity (\k -> getCodensity (getCont (f (\a -> Cont (Codensity (\_ -> Const (getConst ((k a)))))))) k))
hunk ./doc/html/monad-ran/src/Control-Monad-Ran-Cont.html 28
-newtype Cont r a = Cont {getCont :: forall o. (a -> r) -> (r -> o) -> o}
-
-instance Functor (Cont r) where
- fmap f (Cont g) = Cont (\k -> g (k . f))
-
-instance Applicative (Cont r) where
- pure = return
- (<*>) = ap
-
-instance Monad (Cont r) where
- return a = Cont (\k z -> z (k a))
- Cont g >>= f = Cont (\k -> g (\a -> getCont (f a) k id))
-
-runCont :: Cont r a -> (a -> r) -> r
-runCont (Cont g) = flip g id
-
-idCont :: Cont a a -> a
-idCont = flip runCont id
-
-mapCont :: (r -> r) -> Cont r a -> Cont r a
-mapCont f (Cont g) = Cont (\k -> g (f . k))
-
-
-withCont :: ((b -> r) -> (a -> r)) -> Cont r a -> Cont r b
-withCont f (Cont g) = Cont (g . f)
-
-
-instance MonadCont (Cont r) where
- callCC f = Cont (\k -> getCont (f (\a -> Cont (\_ h -> (h . k) a))) k)
-
-shift :: ((a -> Cont s r) -> Cont r r) -> Cont r a
-shift f = Cont (\k -> getCont (f (\a -> Cont (\e h -> (h . e . k) a))) id)
-
-reset :: Cont a a -> Cont r a
-reset m = Cont (\k z -> (z . k) (runCont m id))
-
-
-newtype Cont' r a = Cont' { getCont' :: Codensity (Const r) a }
- deriving (Functor,Applicative,Monad)
-
-instance MonadCont (Cont' r) where
- callCC f = Cont' (Codensity (\k -> getCodensity (getCont' (f (\a -> Cont' (Codensity (\_ -> Const (getConst ((k a)))))))) k))
-
-runCont' :: Cont' r a -> (a -> r) -> r
-runCont' (Cont' f) k = getConst (getCodensity f (Const . k))
+runCont :: Cont r a -> (a -> r) -> r
+runCont (Cont f) k = getConst (getCodensity f (Const . k))
}
|