monadloc 0.3 → 0.4
raw patch · 4 files changed
+103/−3 lines, 4 filesdep +mtldep +transformers
Dependencies added: mtl, transformers
Files
- Control/Monad/Loc.hs +0/−1
- Control/Monad/Loc/Mtl.hs +42/−0
- Control/Monad/Loc/Transformers.hs +42/−0
- monadloc.cabal +19/−2
Control/Monad/Loc.hs view
@@ -31,7 +31,6 @@ -- withLoc :: String -> m a -> m a - instance Monad m => MonadLoc m where withLoc _ = id;
+ Control/Monad/Loc/Mtl.hs view
@@ -0,0 +1,42 @@+{-# LANGUAGE OverlappingInstances #-}+module Control.Monad.Loc.Mtl where++import Control.Monad.Loc++import Control.Monad.Error+import Control.Monad.List+import Control.Monad.Reader+import Control.Monad.State.Lazy as Lazy+import Control.Monad.State.Strict as Strict+import Control.Monad.Writer.Lazy as Lazy+import Control.Monad.Writer.Strict as Strict+import Control.Monad.RWS.Lazy as Lazy+import Control.Monad.RWS.Strict as Strict+import Data.Monoid++instance MonadLoc m => MonadLoc (ListT m) where+ withLoc l = ListT . withLoc l . runListT++instance (Error e, MonadLoc m) => MonadLoc (ErrorT e m) where+ withLoc l = ErrorT . withLoc l . runErrorT++instance MonadLoc m => MonadLoc (ReaderT r m) where+ withLoc l m = ReaderT $ \r -> withLoc l $ runReaderT m r++instance (Monoid w, MonadLoc m) => MonadLoc (Lazy.WriterT w m) where+ withLoc l = Lazy.WriterT . withLoc l . Lazy.runWriterT++instance MonadLoc m => MonadLoc (Lazy.StateT s m) where+ withLoc l m = Lazy.StateT $ \s -> withLoc l $ Lazy.runStateT m s++instance (Monoid w, MonadLoc m) => MonadLoc (Lazy.RWST r w s m) where+ withLoc l m = Lazy.RWST $ \r s -> withLoc l $ Lazy.runRWST m r s++instance (Monoid w, MonadLoc m) => MonadLoc (Strict.WriterT w m) where+ withLoc l = Strict.WriterT . withLoc l . Strict.runWriterT++instance MonadLoc m => MonadLoc (Strict.StateT s m) where+ withLoc l m = Strict.StateT $ \s -> withLoc l $ Strict.runStateT m s++instance (Monoid w, MonadLoc m) => MonadLoc (Strict.RWST r w s m) where+ withLoc l m = Strict.RWST $ \r s -> withLoc l $ Strict.runRWST m r s
+ Control/Monad/Loc/Transformers.hs view
@@ -0,0 +1,42 @@+{-# LANGUAGE OverlappingInstances #-}+module Control.Monad.Loc.Transformers where++import Control.Monad.Loc++import Control.Monad.Trans.Error+import Control.Monad.Trans.List+import Control.Monad.Trans.Reader+import Control.Monad.Trans.State.Lazy as Lazy+import Control.Monad.Trans.State.Strict as Strict+import Control.Monad.Trans.Writer.Lazy as Lazy+import Control.Monad.Trans.Writer.Strict as Strict+import Control.Monad.Trans.RWS.Lazy as Lazy+import Control.Monad.Trans.RWS.Strict as Strict+import Data.Monoid++instance MonadLoc m => MonadLoc (ListT m) where+ withLoc l = ListT . withLoc l . runListT++instance (Error e, MonadLoc m) => MonadLoc (ErrorT e m) where+ withLoc l = ErrorT . withLoc l . runErrorT++instance MonadLoc m => MonadLoc (ReaderT r m) where+ withLoc l m = ReaderT $ \r -> withLoc l $ runReaderT m r++instance (Monoid w, MonadLoc m) => MonadLoc (Lazy.WriterT w m) where+ withLoc l = Lazy.WriterT . withLoc l . Lazy.runWriterT++instance MonadLoc m => MonadLoc (Lazy.StateT s m) where+ withLoc l m = Lazy.StateT $ \s -> withLoc l $ Lazy.runStateT m s++instance (Monoid w, MonadLoc m) => MonadLoc (Lazy.RWST r w s m) where+ withLoc l m = Lazy.RWST $ \r s -> withLoc l $ Lazy.runRWST m r s++instance (Monoid w, MonadLoc m) => MonadLoc (Strict.WriterT w m) where+ withLoc l = Strict.WriterT . withLoc l . Strict.runWriterT++instance MonadLoc m => MonadLoc (Strict.StateT s m) where+ withLoc l m = Strict.StateT $ \s -> withLoc l $ Strict.runStateT m s++instance (Monoid w, MonadLoc m) => MonadLoc (Strict.RWST r w s m) where+ withLoc l m = Strict.RWST $ \r s -> withLoc l $ Strict.runRWST m r s
monadloc.cabal view
@@ -1,5 +1,5 @@ name: monadloc-version: 0.3+version: 0.4 Cabal-Version: >= 1.2.3 build-type: Simple license: PublicDomain@@ -25,6 +25,12 @@ Flag syb-in-base default: False +Flag mtl+ default: True++Flag transformers+ default: True+ Library buildable: True build-depends: pretty, template-haskell@@ -33,7 +39,18 @@ build-depends: base >= 3 && < 4 else build-depends: base >= 4 && < 5, syb- ghc-options: -Wall++ if flag(mtl)+ cpp-options: -DMTL+ build-depends: mtl+ exposed-modules: Control.Monad.Loc.Mtl++ if flag(transformers)+ cpp-options: -DTRANSFORMERS+ build-depends: transformers+ exposed-modules: Control.Monad.Loc.Transformers+ + ghc-options: -Wall -fno-warn-orphans extensions: FlexibleInstances, OverlappingInstances, UndecidableInstances, TemplateHaskell, PatternGuards exposed-modules: Control.Monad.Loc