on master help sign in
Instance search is now more strict
commitda52dc793363f935b2269aa693594c4626f9b24f authorIndex Int <vlad.z.4096@gmail.com> dateTue 26 Jan 2016, 11:29 (11 years ago) parentc9a138c
6 files changed+10−6
CHANGELOG.md+1 src/Control/Monad/Ether/Except/Class.hs+2−1 src/Control/Monad/Ether/Reader/Class.hs+2−1 src/Control/Monad/Ether/State/Class.hs+3−2 src/Control/Monad/Ether/Writer/Class.hs+2−1 test/Regression/T4.hs−1
CHANGELOG.md+1
@@ -6,6 +6,7 @@
66* Replace `Control.Ether.Wrapped` with `Control.Monad.Trans.Ether.Dispatch`.
77* `MonadThrow`, `MonadCatch`, `MonadMask` instances.
88* Drop `newtype-generics`.
9+* Instance search is now more strict.
910
1011
11120.3.1.1
src/Control/Monad/Ether/Except/Class.hs+2−1
@@ -9,6 +9,7 @@
99{-# LANGUAGE FlexibleInstances #-}
1010{-# LANGUAGE UndecidableInstances #-}
1111{-# LANGUAGE FunctionalDependencies #-}
12+{-# LANGUAGE TypeFamilies #-}
1213{-# LANGUAGE PolyKinds #-}
1314
1415-- | See "Control.Monad.Except".
@@ -31,7 +32,7 @@ class Monad m => MonadExcept tag e m | m tag -> e where
3132 -- normal execution.
3233 catch :: proxy tag -> m a -> (e -> m a) -> m a
3334
34−instance Monad m => MonadExcept tag e (E.ExceptT tag e m) where
35+instance (Monad m, e ~ e') => MonadExcept tag e (E.ExceptT tag e' m) where
3536 throw = E.throw
3637 catch = E.catch
3738
src/Control/Monad/Ether/Reader/Class.hs+2−1
@@ -9,6 +9,7 @@
99{-# LANGUAGE FlexibleInstances #-}
1010{-# LANGUAGE UndecidableInstances #-}
1111{-# LANGUAGE FunctionalDependencies #-}
12+{-# LANGUAGE TypeFamilies #-}
1213{-# LANGUAGE PolyKinds #-}
1314
1415-- | See "Control.Monad.Reader.Class".
@@ -57,7 +58,7 @@ asks
5758 -> m a
5859asks = reader
5960
60−instance Monad m => MonadReader tag r (R.ReaderT tag r m) where
61+instance (Monad m, r ~ r') => MonadReader tag r (R.ReaderT tag r' m) where
6162 ask = R.ask
6263 local = R.local
6364 reader = R.reader
src/Control/Monad/Ether/State/Class.hs+3−2
@@ -9,6 +9,7 @@
99{-# LANGUAGE FlexibleInstances #-}
1010{-# LANGUAGE UndecidableInstances #-}
1111{-# LANGUAGE FunctionalDependencies #-}
12+{-# LANGUAGE TypeFamilies #-}
1213{-# LANGUAGE PolyKinds #-}
1314
1415-- | See "Control.Monad.State.Class".
@@ -53,12 +54,12 @@ modify t f = state t (\s -> ((), f s))
5354gets :: MonadState tag s m => proxy tag -> (s -> a) -> m a
5455gets t f = Util.fmap f (get t)
5556
56−instance Monad m => MonadState tag s (S.L.StateT tag s m) where
57+instance (Monad m, s ~ s') => MonadState tag s (S.L.StateT tag s' m) where
5758 get = S.L.get
5859 put = S.L.put
5960 state = S.L.state
6061
61−instance Monad m => MonadState tag s (S.S.StateT tag s m) where
62+instance (Monad m, s ~ s') => MonadState tag s (S.S.StateT tag s' m) where
6263 get = S.S.get
6364 put = S.S.put
6465 state = S.S.state
src/Control/Monad/Ether/Writer/Class.hs+2−1
@@ -9,6 +9,7 @@
99{-# LANGUAGE FlexibleInstances #-}
1010{-# LANGUAGE UndecidableInstances #-}
1111{-# LANGUAGE FunctionalDependencies #-}
12+{-# LANGUAGE TypeFamilies #-}
1213{-# LANGUAGE PolyKinds #-}
1314
1415-- | See "Control.Monad.Writer.Class".
@@ -63,7 +64,7 @@ censor t f m = pass t $ do
6364 a <- m
6465 return (a, f)
6566
66−instance (Monoid w, Monad m) => MonadWriter tag w (W.WriterT tag w m) where
67+instance (Monoid w, Monad m, w ~ w') => MonadWriter tag w (W.WriterT tag w' m) where
6768 writer = W.writer
6869 tell = W.tell
6970 listen = W.listen
test/Regression/T4.hs−1
@@ -14,7 +14,6 @@ testEther = ask rTag
1414runner r
1515 = flip (runReader rTag) (r' :: Int)
1616 . flip (runReaderT rTag) (r :: Int)
17− . flip (runReaderT rTag) (fromIntegral r' :: Integer)
1817 where
1918 r' = negate r
2019