packages feed

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 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