@@ -6,7 +6,8 @@
66{-# LANGUAGE DataKinds #-}
77{-# LANGUAGE PolyKinds #-}
88{-# LANGUAGE GeneralizedNewtypeDeriving #-}
9−{-# LANGUAGE MagicHash #-}
9+{-# LANGUAGE AllowAmbiguousTypes #-}
10+{-# LANGUAGE ScopedTypeVariables #-}
1011
1112-- | See "Control.Monad.Trans.Reader".
1213
@@ -25,7 +26,6 @@ module Control.Monad.Trans.Ether.Reader
2526 , local
2627 ) where
2728
28−import GHC.Prim (Proxy#)
2929import Data.Functor.Identity (Identity(..))
3030import qualified Control.Monad.Trans.Reader as Trans
3131import Control.Monad.Trans.Ether.Tagged
@@ -46,37 +46,37 @@ type Reader tag r = ReaderT tag r Identity
4646type ReaderT tag r = TaggedTrans tag (Trans.ReaderT r)
4747
4848-- | Constructor for computations in the reader monad transformer.
49−readerT :: Proxy# tag -> (r -> m a) -> ReaderT tag r m a
50−readerT _ = pack . Trans.ReaderT
49+readerT :: forall tag r m a . (r -> m a) -> ReaderT tag r m a
50+readerT = pack . Trans.ReaderT
5151
5252-- | Constructor for computations in the reader monad
5353-- (the inverse of 'runReader').
54−reader :: Monad m => Proxy# tag -> (r -> a) -> ReaderT tag r m a
55−reader _ = pack . Trans.reader
54+reader :: forall tag r m a . Monad m => (r -> a) -> ReaderT tag r m a
55+reader = pack . Trans.reader
5656
5757-- | Runs a 'ReaderT' with the given environment
5858-- and returns the final value.
59−runReaderT :: Proxy# tag -> ReaderT tag r m a -> r -> m a
60−runReaderT _ = Trans.runReaderT . unpack
59+runReaderT :: forall tag r m a . ReaderT tag r m a -> r -> m a
60+runReaderT = Trans.runReaderT . unpack
6161
6262-- | Runs a 'ReaderT' with the given environment
6363-- and returns the final value.
64−runReader :: Proxy# tag -> Reader tag r a -> r -> a
65−runReader _ = Trans.runReader . unpack
64+runReader :: forall tag r a . Reader tag r a -> r -> a
65+runReader = Trans.runReader . unpack
6666
6767-- | Fetch the value of the environment.
68−ask :: Monad m => Proxy# tag -> ReaderT tag r m r
69−ask _ = pack Trans.ask
68+ask :: forall tag r m . Monad m => ReaderT tag r m r
69+ask = pack Trans.ask
7070
7171-- | Execute a computation in a modified environment
7272-- (a specialization of 'withReaderT').
7373--
7474-- * @'runReaderT' tag ('local' tag f m) = 'runReaderT' tag m . f@
7575local
76− :: Proxy# tag
77− -> (r -> r)
76+ :: forall tag r m a
77+ . (r -> r)
7878 -- ^ The function to modify the environment.
7979 -> ReaderT tag r m a
8080 -- ^ Computation to run in the modified environment.
8181 -> ReaderT tag r m a
82−local _ f = pack . Trans.withReaderT f . unpack
82+local f = pack . Trans.withReaderT f . unpack