[missing documentation
ekmett@gmail.com**20090412100151
Ignore-this: 72dad1cc5a3632b703f1cb0830c777ae
] {
addfile ./doc/html/monad-cps/Control-Monad-CPS-Maybe.html
hunk ./doc/html/monad-cps/Control-Monad-CPS-Maybe.html 1
+
+
+
Control.Monad.CPS.Maybe |
|
|
|
|
Documentation |
|
|
Constructors | Maybe' | | getMaybe' :: forall o. (a -> o) -> o -> o | |
|
| Instances | |
|
|
|
|
Produced by Haddock version 2.3.0 |
addfile ./doc/html/monad-cps/src/Control-Monad-CPS-Maybe.html
hunk ./doc/html/monad-cps/src/Control-Monad-CPS-Maybe.html 1
+
+
+
+
+src/Control/Monad/CPS/Maybe.hs
+
+
+
+module Control.Monad.CPS.Maybe
+ ( Maybe'(Maybe',getMaybe')
+ , runMaybe'
+ ) where
+
+import Control.Applicative
+import Control.Monad
+
+newtype Maybe' a = Maybe' { getMaybe' :: forall o. (a -> o) -> o -> o }
+
+runMaybe' :: Maybe' a -> (a -> b) -> b -> b
+runMaybe' = getMaybe'
+
+instance Functor Maybe' where
+ fmap f (Maybe' g) = Maybe' (\k -> g (k . f))
+
+instance Applicative Maybe' where
+ pure = return
+ (<*>) = ap
+
+instance Monad Maybe' where
+ return a = Maybe' (\k _ -> k a)
+ Maybe' f >>= g = Maybe' (\k z -> f (\a -> getMaybe' (g a) k z) z)
+
+
+
+
}