git.iko.soy/typeable/transformers-lift
on master help sign in
Compile without warnings
89e514bIndex Int
src/Control/Monad/Trans/Lift/CallCC.hs+3−1
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
1{-# LANGUAGE TypeFamilies #-}
2{-# LANGUAGE TypeFamilies #-}
2{-# LANGUAGE UndecidableInstances #-}
3{-# LANGUAGE UndecidableInstances #-}
3module Control.Monad.Trans.Lift.CallCC
4module Control.Monad.Trans.Lift.CallCC
@@ -6,7 +7,9 @@ module Control.Monad.Trans.Lift.CallCC
6 , module Control.Monad.Trans.Class
7 , module Control.Monad.Trans.Class
7 ) where
8 ) where
8
9
10+#if __GLASGOW_HASKELL__ < 710
9import Data.Monoid
11import Data.Monoid
12+#endif
10
13
11import Control.Monad.Signatures
14import Control.Monad.Signatures
12import Control.Monad.Trans.Class
15import Control.Monad.Trans.Class
@@ -17,7 +20,6 @@ import qualified Control.Monad.Trans.Identity as I
17import qualified Control.Monad.Trans.List as L
20import qualified Control.Monad.Trans.List as L
18import qualified Control.Monad.Trans.Maybe as M
21import qualified Control.Monad.Trans.Maybe as M
19import qualified Control.Monad.Trans.Reader as R
22import qualified Control.Monad.Trans.Reader as R
20−import qualified Control.Monad.Trans.Cont as C
21import qualified Control.Monad.Trans.RWS.Lazy as RWS.Lazy
23import qualified Control.Monad.Trans.RWS.Lazy as RWS.Lazy
22import qualified Control.Monad.Trans.RWS.Strict as RWS.Strict
24import qualified Control.Monad.Trans.RWS.Strict as RWS.Strict
23import qualified Control.Monad.Trans.State.Lazy as S.Lazy
25import qualified Control.Monad.Trans.State.Lazy as S.Lazy
src/Control/Monad/Trans/Lift/Catch.hs+5−3
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
1{-# LANGUAGE TypeFamilies #-}
2{-# LANGUAGE TypeFamilies #-}
2{-# LANGUAGE UndecidableInstances #-}
3{-# LANGUAGE UndecidableInstances #-}
3{-# LANGUAGE DefaultSignatures #-}
4{-# LANGUAGE DefaultSignatures #-}
@@ -7,7 +8,9 @@ module Control.Monad.Trans.Lift.Catch
7 , module Control.Monad.Trans.Class
8 , module Control.Monad.Trans.Class
8 ) where
9 ) where
9
10
11+#if __GLASGOW_HASKELL__ < 710
10import Data.Monoid
12import Data.Monoid
13+#endif
11
14
12import Control.Monad.Signatures
15import Control.Monad.Signatures
13import Control.Monad.Trans.Class
16import Control.Monad.Trans.Class
@@ -18,7 +21,6 @@ import Control.Monad.Trans.Identity
18import Control.Monad.Trans.List
21import Control.Monad.Trans.List
19import Control.Monad.Trans.Maybe
22import Control.Monad.Trans.Maybe
20import Control.Monad.Trans.Reader
23import Control.Monad.Trans.Reader
21−import qualified Control.Monad.Trans.Cont as Cont
22import qualified Control.Monad.Trans.RWS.Lazy as Lazy
24import qualified Control.Monad.Trans.RWS.Lazy as Lazy
23import qualified Control.Monad.Trans.RWS.Strict as Strict
25import qualified Control.Monad.Trans.RWS.Strict as Strict
24import qualified Control.Monad.Trans.State.Lazy as Lazy
26import qualified Control.Monad.Trans.State.Lazy as Lazy
@@ -33,8 +35,8 @@ class MonadTrans t => LiftCatch t where
33 default liftCatch
35 default liftCatch
34 :: (MonadTransControl t, CatchStT t a ~ StT t a, Monad m, Monad (t m))
36 :: (MonadTransControl t, CatchStT t a ~ StT t a, Monad m, Monad (t m))
35 => Catch e m (CatchStT t a) -> Catch e (t m) a
37 => Catch e m (CatchStT t a) -> Catch e (t m) a
36− liftCatch catchE m h = do
38+ liftCatch catch m h = do
37− liftWith (\run -> catchE (run m) (run . h)) >>= restoreT . return
39+ liftWith (\run -> catch (run m) (run . h)) >>= restoreT . return
38
40
39instance LiftCatch (ExceptT e)
41instance LiftCatch (ExceptT e)
40instance LiftCatch IdentityT
42instance LiftCatch IdentityT
src/Control/Monad/Trans/Lift/Listen.hs+9−1
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
1{-# LANGUAGE TypeFamilies #-}
2{-# LANGUAGE TypeFamilies #-}
2{-# LANGUAGE UndecidableInstances #-}
3{-# LANGUAGE UndecidableInstances #-}
3module Control.Monad.Trans.Lift.Listen
4module Control.Monad.Trans.Lift.Listen
@@ -6,7 +7,9 @@ module Control.Monad.Trans.Lift.Listen
6 , module Control.Monad.Trans.Class
7 , module Control.Monad.Trans.Class
7 ) where
8 ) where
8
9
10+#if __GLASGOW_HASKELL__ < 710
9import Data.Monoid
11import Data.Monoid
12+#endif
10
13
11import Control.Monad.Signatures
14import Control.Monad.Signatures
12import Control.Monad.Trans.Class
15import Control.Monad.Trans.Class
@@ -16,7 +19,6 @@ import qualified Control.Monad.Trans.Except as E
16import qualified Control.Monad.Trans.Identity as I
19import qualified Control.Monad.Trans.Identity as I
17import qualified Control.Monad.Trans.Maybe as M
20import qualified Control.Monad.Trans.Maybe as M
18import qualified Control.Monad.Trans.Reader as R
21import qualified Control.Monad.Trans.Reader as R
19−import qualified Control.Monad.Trans.Cont as C
20import qualified Control.Monad.Trans.RWS.Lazy as RWS.Lazy
22import qualified Control.Monad.Trans.RWS.Lazy as RWS.Lazy
21import qualified Control.Monad.Trans.RWS.Strict as RWS.Strict
23import qualified Control.Monad.Trans.RWS.Strict as RWS.Strict
22import qualified Control.Monad.Trans.State.Lazy as S.Lazy
24import qualified Control.Monad.Trans.State.Lazy as S.Lazy
@@ -48,6 +50,12 @@ instance LiftListen (S.Lazy.StateT s) where
48instance LiftListen (S.Strict.StateT s) where
50instance LiftListen (S.Strict.StateT s) where
49 liftListen = S.Strict.liftListen
51 liftListen = S.Strict.liftListen
50
52
53+instance Monoid w' => LiftListen (RWS.Lazy.RWST r w' s) where
54+ liftListen = error "TODO"
55+
56+instance Monoid w' => LiftListen (RWS.Strict.RWST r w' s) where
57+ liftListen = error "TODO"
58+
51instance Monoid w' => LiftListen (W.Lazy.WriterT w') where
59instance Monoid w' => LiftListen (W.Lazy.WriterT w') where
52 liftListen listen m = W.Lazy.WriterT $ do
60 liftListen listen m = W.Lazy.WriterT $ do
53 ~((a, w'), w) <- listen (W.Lazy.runWriterT m)
61 ~((a, w'), w) <- listen (W.Lazy.runWriterT m)
src/Control/Monad/Trans/Lift/Local.hs+3
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
1{-# LANGUAGE RankNTypes #-}
2{-# LANGUAGE RankNTypes #-}
2{-# LANGUAGE DefaultSignatures #-}
3{-# LANGUAGE DefaultSignatures #-}
3module Control.Monad.Trans.Lift.Local
4module Control.Monad.Trans.Lift.Local
@@ -6,7 +7,9 @@ module Control.Monad.Trans.Lift.Local
6 , module Control.Monad.Trans.Class
7 , module Control.Monad.Trans.Class
7 ) where
8 ) where
8
9
10+#if __GLASGOW_HASKELL__ < 710
9import Data.Monoid
11import Data.Monoid
12+#endif
10
13
11import Control.Monad.Trans.Class
14import Control.Monad.Trans.Class
12import Control.Monad.Morph
15import Control.Monad.Morph
src/Control/Monad/Trans/Lift/Pass.hs+9−1
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
1{-# LANGUAGE TypeFamilies #-}
2{-# LANGUAGE TypeFamilies #-}
2{-# LANGUAGE UndecidableInstances #-}
3{-# LANGUAGE UndecidableInstances #-}
3module Control.Monad.Trans.Lift.Pass
4module Control.Monad.Trans.Lift.Pass
@@ -6,7 +7,9 @@ module Control.Monad.Trans.Lift.Pass
6 , module Control.Monad.Trans.Class
7 , module Control.Monad.Trans.Class
7 ) where
8 ) where
8
9
10+#if __GLASGOW_HASKELL__ < 710
9import Data.Monoid
11import Data.Monoid
12+#endif
10
13
11import Control.Monad.Signatures
14import Control.Monad.Signatures
12import Control.Monad.Trans.Class
15import Control.Monad.Trans.Class
@@ -16,7 +19,6 @@ import qualified Control.Monad.Trans.Except as E
16import qualified Control.Monad.Trans.Identity as I
19import qualified Control.Monad.Trans.Identity as I
17import qualified Control.Monad.Trans.Maybe as M
20import qualified Control.Monad.Trans.Maybe as M
18import qualified Control.Monad.Trans.Reader as R
21import qualified Control.Monad.Trans.Reader as R
19−import qualified Control.Monad.Trans.Cont as C
20import qualified Control.Monad.Trans.RWS.Lazy as RWS.Lazy
22import qualified Control.Monad.Trans.RWS.Lazy as RWS.Lazy
21import qualified Control.Monad.Trans.RWS.Strict as RWS.Strict
23import qualified Control.Monad.Trans.RWS.Strict as RWS.Strict
22import qualified Control.Monad.Trans.State.Lazy as S.Lazy
24import qualified Control.Monad.Trans.State.Lazy as S.Lazy
@@ -48,6 +50,12 @@ instance LiftPass (S.Lazy.StateT s) where
48instance LiftPass (S.Strict.StateT s) where
50instance LiftPass (S.Strict.StateT s) where
49 liftPass = S.Strict.liftPass
51 liftPass = S.Strict.liftPass
50
52
53+instance Monoid w' => LiftPass (RWS.Lazy.RWST r w' s) where
54+ liftPass = error "TODO"
55+
56+instance Monoid w' => LiftPass (RWS.Strict.RWST r w' s) where
57+ liftPass = error "TODO"
58+
51instance Monoid w' => LiftPass (W.Lazy.WriterT w') where
59instance Monoid w' => LiftPass (W.Lazy.WriterT w') where
52 liftPass pass m = W.Lazy.WriterT $ pass $ do
60 liftPass pass m = W.Lazy.WriterT $ pass $ do
53 ~((a, f), w) <- W.Lazy.runWriterT m
61 ~((a, f), w) <- W.Lazy.runWriterT m
transformers-lift.cabal+10−3
@@ -1,5 +1,5 @@
1name: transformers-lift
1name: transformers-lift
2−version: 0.1.0.0
2+version: 0.0.0.0
3synopsis: Ad-hoc type classes for lifting
3synopsis: Ad-hoc type classes for lifting
4-- description:
4-- description:
5license: BSD3
5license: BSD3
@@ -19,10 +19,17 @@ library
19 Control.Monad.Trans.Lift.Listen
19 Control.Monad.Trans.Lift.Listen
20 Control.Monad.Trans.Lift.Pass
20 Control.Monad.Trans.Lift.Pass
21 -- other-modules:
21 -- other-modules:
22− -- other-extensions:
23 build-depends: base >=4.7 && <4.9
22 build-depends: base >=4.7 && <4.9
24 , transformers >= 0.4.2
23 , transformers >= 0.4.2
25 , mmorph >= 1.0.4
24 , mmorph >= 1.0.4
26 , monad-control >= 1.0.0.4
25 , monad-control >= 1.0.0.4
27− hs-source-dirs: src
26+
28 default-language: Haskell2010
27 default-language: Haskell2010
28+ other-extensions: CPP
29+ DefaultSignatures
30+ RankNTypes
31+ TypeFamilies
32+ UndecidableInstances
33+
34+ hs-source-dirs: src
35+ ghc-options: -Wall