blob: 6f3cf8824672d88446fe13e3dc53d953abaf0dd9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
module T17810a where
import Control.Monad.Except
class Monad m => ReadTCState m where
locallyTCState :: m ()
liftReduce :: m ()
instance ReadTCState m => ReadTCState (ExceptT err m) where
locallyTCState = undefined
liftReduce = lift liftReduce
instance MonadIO m => ReadTCState (TCMT m) where
locallyTCState = (undefined <$> liftReduce) <* TCM (\_ -> return ())
liftReduce = undefined
newtype TCMT m a = TCM { unTCM :: () -> m a }
instance MonadIO m => Functor (TCMT m) where
fmap f (TCM m) = TCM $ \r -> liftM f (m r )
instance MonadIO m => Applicative (TCMT m) where
pure x = TCM (\_ -> return x)
(<*>) (TCM mf) (TCM m) = TCM $ \r -> ap (mf r) (m r)
instance MonadIO m => Monad (TCMT m) where
(>>=) (TCM m) k = TCM $ \r -> m r >>= \x -> unTCM (k x) r
|