on master help sign in
Fix GHC 7.8 support
b94a04bIndex Int
ether.cabal−1
@@ -76,7 +76,6 @@ library
76 FunctionalDependencies
76 FunctionalDependencies
77 GeneralizedNewtypeDeriving
77 GeneralizedNewtypeDeriving
78 MultiParamTypeClasses
78 MultiParamTypeClasses
79− PolyKinds
80 ScopedTypeVariables
79 ScopedTypeVariables
81 TemplateHaskell
80 TemplateHaskell
82 TypeFamilies
81 TypeFamilies
src/Control/Ether/TT.hs+5−2
@@ -4,6 +4,7 @@
4{-# LANGUAGE PolyKinds #-}
4{-# LANGUAGE PolyKinds #-}
5{-# LANGUAGE MultiParamTypeClasses #-}
5{-# LANGUAGE MultiParamTypeClasses #-}
6{-# LANGUAGE UndecidableInstances #-}
6{-# LANGUAGE UndecidableInstances #-}
7+{-# LANGUAGE ConstraintKinds #-}
7{-# LANGUAGE TypeFamilies #-}
8{-# LANGUAGE TypeFamilies #-}
8module Control.Ether.TT where
9module Control.Ether.TT where
9
10
@@ -34,6 +35,8 @@ import qualified Control.Monad.Error.Class as Class
34import GHC.Generics (Generic)
35import GHC.Generics (Generic)
35import Data.Coerce (coerce)
36import Data.Coerce (coerce)
36
37
38+import Control.Ether.Util (MonadApplicative)
39+
37-- | Tagged monad transformer.
40-- | Tagged monad transformer.
38newtype TT tag trans (m :: * -> *) a = TT (trans m a)
41newtype TT tag trans (m :: * -> *) a = TT (trans m a)
39 deriving
42 deriving
@@ -63,7 +66,7 @@ unpack = coerce
63instance
66instance
64 ( MB.MonadBase b m
67 ( MB.MonadBase b m
65 , MonadTrans trans
68 , MonadTrans trans
66− , Monad (trans m)
69+ , MonadApplicative (trans m)
67 ) => MB.MonadBase b (TT tag trans m)
70 ) => MB.MonadBase b (TT tag trans m)
68 where
71 where
69 liftBase = MB.liftBaseDefault
72 liftBase = MB.liftBaseDefault
@@ -79,7 +82,7 @@ instance
79instance
82instance
80 ( MC.MonadBaseControl b m
83 ( MC.MonadBaseControl b m
81 , MC.MonadTransControl trans
84 , MC.MonadTransControl trans
82− , Monad (trans m)
85+ , MonadApplicative (trans m)
83 ) => MC.MonadBaseControl b (TT tag trans m)
86 ) => MC.MonadBaseControl b (TT tag trans m)
84 where
87 where
85 type StM (TT tag trans m) a = MC.ComposeSt trans m a
88 type StM (TT tag trans m) a = MC.ComposeSt trans m a
src/Control/Ether/Util.hs+13−2
@@ -1,11 +1,14 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
2+{-# LANGUAGE ConstraintKinds #-}
2module Control.Ether.Util
3module Control.Ether.Util
3− ( fmap
4+ ( fmap
4− ) where
5+ , MonadApplicative
6+ ) where
5
7
6import Prelude hiding (fmap)
8import Prelude hiding (fmap)
7
9
8#if __GLASGOW_HASKELL__ < 710
10#if __GLASGOW_HASKELL__ < 710
11+import qualified Control.Applicative
9import qualified Control.Monad
12import qualified Control.Monad
10#else
13#else
11import qualified Prelude
14import qualified Prelude
@@ -20,3 +23,11 @@ fmap = Prelude.fmap
20#endif
23#endif
21
24
22{-# INLINE fmap #-}
25{-# INLINE fmap #-}
26+
27+#if __GLASGOW_HASKELL__ < 710
28+type MonadApplicative m =
29+ ( Control.Applicative.Applicative m
30+ , Control.Monad.Monad m )
31+#else
32+type MonadApplicative = Monad
33+#endif