git.iko.soy/rowtype-yoga/purescript-native
on e82e607 help sign in
41 lines 908 B history raw
1module Main where
3import Debug.Trace
5import Control.Monad.Eff
7class (Monad m) <= MonadWriter w m where
8 tell :: w -> m {}
10testFunctor :: forall m. (Monad m) => m Number -> m Number
11testFunctor n = (+) 1 <$> n
13test :: forall w m. (Monad m, MonadWriter w m) => w -> m {}
14test w = do
15 tell w
16 tell w
17 tell w
19data MTrace a = MTrace (Eff (trace :: Trace) a)
21runMTrace :: forall a. MTrace a -> Eff (trace :: Trace) a
22runMTrace (MTrace a) = a
24instance functorMTrace :: Functor MTrace where
25 (<$>) = liftM1
27instance applyMTrace :: Apply MTrace where
28 (<*>) = ap
30instance applicativeMTrace :: Applicative MTrace where
31 pure = MTrace <<< return
33instance bindMTrace :: Bind MTrace where
34 (>>=) m f = MTrace (runMTrace m >>= (runMTrace <<< f))
36instance monadMTrace :: Monad MTrace
38instance writerMTrace :: MonadWriter String MTrace where
39 tell s = MTrace (trace s)
41main = runMTrace $ test "Done"