purescript-0.15.15: tests/purs/passing/NewtypeEff.purs
module Main where
import Prelude
import Effect.Console
import Effect
newtype T a = T (Effect a)
runT :: forall a. T a -> Effect a
runT (T t) = t
instance functorT :: Functor T where
map f (T t) = T (f <$> t)
instance applyT :: Apply T where
apply (T f) (T x) = T (f <*> x)
instance applicativeT :: Applicative T where
pure t = T (pure t)
instance bindT :: Bind T where
bind (T t) f = T (t >>= \x -> runT (f x))
instance monadT :: Monad T
main = runT do
T $ log "Done"
T $ log "Done"
T $ log "Done"