git.iko.soy/typeable/transformers-lift
on master help sign in
Do not use mmorph
commit8e241f133d9889a9aef67174e9f332e4ff8cc806 authorIndex Int <vlad.z.4096@gmail.com> dateSat 11 Jul 2015, 19:18 (11 years ago) parent5defc8d
2 files changed+59−36
src/Control/Monad/Trans/Lift/Local.hs+59−35 transformers-lift.cabal−1
src/Control/Monad/Trans/Lift/Local.hs+59−35
@@ -4,6 +4,7 @@
44module Control.Monad.Trans.Lift.Local
55 ( LiftLocal(..)
66 , Local
7+ , defaultLiftLocal
78 , module Control.Monad.Trans.Class
89 ) where
910
@@ -12,20 +13,19 @@ import Data.Monoid
1213#endif
1314
1415import Control.Monad.Trans.Class
15−import Control.Monad.Morph
16−
17−import Control.Monad.Trans.Except
18−import Control.Monad.Trans.Identity
19−import Control.Monad.Trans.List
20−import Control.Monad.Trans.Maybe
21−import Control.Monad.Trans.Reader
22−import qualified Control.Monad.Trans.Cont as Cont
23−import qualified Control.Monad.Trans.RWS.Lazy as Lazy
24−import qualified Control.Monad.Trans.RWS.Strict as Strict
25−import qualified Control.Monad.Trans.State.Lazy as Lazy
26−import qualified Control.Monad.Trans.State.Strict as Strict
27−import qualified Control.Monad.Trans.Writer.Lazy as Lazy
28−import qualified Control.Monad.Trans.Writer.Strict as Strict
16+
17+import qualified Control.Monad.Trans.Cont as C
18+import qualified Control.Monad.Trans.Except as E
19+import qualified Control.Monad.Trans.Identity as I
20+import qualified Control.Monad.Trans.List as L
21+import qualified Control.Monad.Trans.Maybe as M
22+import qualified Control.Monad.Trans.Reader as R
23+import qualified Control.Monad.Trans.RWS.Lazy as RWS.Lazy
24+import qualified Control.Monad.Trans.RWS.Strict as RWS.Strict
25+import qualified Control.Monad.Trans.State.Lazy as S.Lazy
26+import qualified Control.Monad.Trans.State.Strict as S.Strict
27+import qualified Control.Monad.Trans.Writer.Lazy as W.Lazy
28+import qualified Control.Monad.Trans.Writer.Strict as W.Strict
2929
3030type Local r m a = (r -> r) -> m a -> m a
3131
@@ -35,24 +35,48 @@ class MonadTrans t => LiftLocal t where
3535 => m r
3636 -> (forall a . Local r m a)
3737 -> (forall a . Local r (t m) a)
38− default liftLocal
39− :: (Monad m, MFunctor t)
40− => m r
41− -> (forall a . Local r m a)
42− -> (forall a . Local r (t m) a)
43− liftLocal _ l f = hoist (l f)
44−
45−instance LiftLocal (Cont.ContT r)
46− where liftLocal a l f = Cont.liftLocal a l f
47−
48−instance LiftLocal (ExceptT e)
49−instance LiftLocal IdentityT
50−instance LiftLocal ListT
51−instance LiftLocal MaybeT
52−instance LiftLocal (ReaderT r)
53−instance Monoid w => LiftLocal (Lazy.RWST r w s)
54−instance Monoid w => LiftLocal (Strict.RWST r w s)
55−instance LiftLocal (Lazy.StateT s)
56−instance LiftLocal (Strict.StateT s)
57−instance Monoid w => LiftLocal (Lazy.WriterT w)
58−instance Monoid w => LiftLocal (Strict.WriterT w)
38+
39+defaultLiftLocal
40+ :: (Monad m, LiftLocal n)
41+ => (forall x . n m x -> t m x)
42+ -> (forall o x . t o x -> n o x)
43+ -> m r
44+ -> (forall a . Local r m a)
45+ -> (forall a . Local r (t m) a)
46+defaultLiftLocal t unT a l f = t . liftLocal a l f . unT
47+
48+instance LiftLocal (C.ContT r) where
49+ liftLocal a l f = C.liftLocal a l f
50+
51+instance LiftLocal (E.ExceptT e) where
52+ liftLocal _ l f = E.mapExceptT (l f)
53+
54+instance LiftLocal I.IdentityT where
55+ liftLocal _ l f = I.mapIdentityT (l f)
56+
57+instance LiftLocal L.ListT where
58+ liftLocal _ l f = L.mapListT (l f)
59+
60+instance LiftLocal M.MaybeT where
61+ liftLocal _ l f = M.mapMaybeT (l f)
62+
63+instance LiftLocal (R.ReaderT r) where
64+ liftLocal _ l f = R.mapReaderT (l f)
65+
66+instance Monoid w => LiftLocal (RWS.Lazy.RWST r w s) where
67+ liftLocal _ l f = RWS.Lazy.mapRWST (l f)
68+
69+instance Monoid w => LiftLocal (RWS.Strict.RWST r w s) where
70+ liftLocal _ l f = RWS.Strict.mapRWST (l f)
71+
72+instance LiftLocal (S.Lazy.StateT s) where
73+ liftLocal _ l f = S.Lazy.mapStateT (l f)
74+
75+instance LiftLocal (S.Strict.StateT s) where
76+ liftLocal _ l f = S.Strict.mapStateT (l f)
77+
78+instance Monoid w => LiftLocal (W.Lazy.WriterT w) where
79+ liftLocal _ l f = W.Lazy.mapWriterT (l f)
80+
81+instance Monoid w => LiftLocal (W.Strict.WriterT w) where
82+ liftLocal _ l f = W.Strict.mapWriterT (l f)
transformers-lift.cabal−1
@@ -22,7 +22,6 @@ library
2222 -- other-modules:
2323 build-depends: base >=4.7 && <4.9
2424 , transformers >= 0.4.2
25− , mmorph >= 1.0.4
2625
2726 default-language: Haskell2010
2827 -- other-extensions: