packages feed

transformers-base 0.3 → 0.4

raw patch · 4 files changed

+56/−132 lines, 4 filesdep −monad-controldep ~transformers

Dependencies removed: monad-control

Dependency ranges changed: transformers

Files

LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2011, Mikhail Vorozhtsov+Copyright (c) 2011, Mikhail Vorozhtsov, Bas van Dijk All rights reserved.  Redistribution and use in source and binary forms, with or without 
src/Control/Monad/Base.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE UnicodeSyntax #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FunctionalDependencies #-}@@ -5,12 +6,13 @@ {-# LANGUAGE UndecidableInstances #-}  module Control.Monad.Base (-    MonadBase(..)+    MonadBase(..),+    liftBaseDefault   ) where  import Data.Monoid import Data.Functor.Identity-import Control.Applicative+import Control.Applicative (Applicative) import qualified Control.Monad.ST.Lazy as L import qualified Control.Monad.ST.Strict as S import Control.Monad.Trans.Class@@ -26,42 +28,51 @@ import qualified Control.Monad.Trans.RWS.Strict as S import Control.Monad.Trans.Error import Control.Monad.Trans.Cont+import GHC.Conc.Sync (STM) -class (Applicative μ, Monad μ,-       Applicative η, Monad η) ⇒ MonadBase η μ | μ → η where+class (Applicative b, Applicative m, Monad b, Monad m)+      ⇒ MonadBase b m | m → b where   -- | Lift a computation from the base monad-  liftBase ∷ η α → μ α+  liftBase ∷ b α → m α -instance MonadBase IO IO                 where liftBase = id-instance MonadBase Identity Identity     where liftBase = id-instance MonadBase Maybe Maybe           where liftBase = id-instance MonadBase (Either e) (Either e) where liftBase = id-instance MonadBase [] []                 where liftBase = id-instance MonadBase (L.ST s) (L.ST s)     where liftBase = id-instance MonadBase (S.ST s) (S.ST s)     where liftBase = id+#define BASE(M) \+instance MonadBase (M) (M) where liftBase = id -instance MonadBase η μ ⇒ MonadBase η (IdentityT μ) where-  liftBase = lift . liftBase-instance MonadBase η μ ⇒ MonadBase η (MaybeT μ) where-  liftBase = lift . liftBase-instance MonadBase η μ ⇒ MonadBase η (ListT μ) where-  liftBase = lift . liftBase-instance MonadBase η μ ⇒ MonadBase η (ReaderT r μ) where-  liftBase = lift . liftBase-instance (Monoid w, MonadBase η μ) ⇒ MonadBase η (L.WriterT w μ) where-  liftBase = lift . liftBase-instance (Monoid w, MonadBase η μ) ⇒ MonadBase η (S.WriterT w μ) where-  liftBase = lift . liftBase-instance MonadBase η μ ⇒ MonadBase η (L.StateT s μ) where-  liftBase = lift . liftBase-instance MonadBase η μ ⇒ MonadBase η (S.StateT s μ) where-  liftBase = lift . liftBase-instance (Monoid w, MonadBase η μ) ⇒ MonadBase η (L.RWST r w s μ) where-  liftBase = lift . liftBase-instance (Monoid w, MonadBase η μ) ⇒ MonadBase η (S.RWST r w s μ) where-  liftBase = lift . liftBase-instance (Error e, MonadBase η μ) ⇒ MonadBase η (ErrorT e μ) where-  liftBase = lift . liftBase-instance MonadBase η μ ⇒ MonadBase η (ContT r μ) where-  liftBase = lift . liftBase+BASE(IO)+BASE(L.ST s)+BASE(S.ST s)+BASE(STM)+BASE(Maybe)+BASE(Either e)+BASE([])+BASE((→) r)+BASE(Identity)+#undef BASE +-- | Can be used as a default implementation for 'liftBase'.+--+-- Note that: @liftBaseDefault = 'lift' . 'liftBase'@+liftBaseDefault ∷ (MonadTrans t, MonadBase b m) ⇒ b α → t m α+liftBaseDefault = lift . liftBase++#define TRANS(T) \+instance (MonadBase b m) ⇒ MonadBase b (T m) where liftBase = liftBaseDefault++TRANS(IdentityT)+TRANS(MaybeT)+TRANS(ListT)+TRANS(ReaderT r)+TRANS(L.StateT s)+TRANS(S.StateT s)+TRANS(ContT r)+#undef TRANS++#define TRANS_CTX(CTX, T) \+instance (CTX, MonadBase b m) ⇒ MonadBase b (T m) where liftBase = liftBaseDefault++TRANS_CTX(Monoid w, L.WriterT w)+TRANS_CTX(Monoid w, S.WriterT w)+TRANS_CTX(Monoid w, L.RWST r w s)+TRANS_CTX(Monoid w, S.RWST r w s)+TRANS_CTX(Error e,  ErrorT e)+#undef TRANS_CTX
− src/Control/Monad/Base/Control.hs
@@ -1,88 +0,0 @@-{-# LANGUAGE UnicodeSyntax #-}-{-# LANGUAGE RankNTypes #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE FunctionalDependencies #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE UndecidableInstances #-}--module Control.Monad.Base.Control (-    MonadBaseControl(..),-    controlBase,-    liftBaseOp,-    liftBaseOp_-  ) where--import Data.Monoid-import Control.Monad-import Control.Monad.Base-import Control.Monad.Trans.Identity-import Control.Monad.Trans.Maybe-import Control.Monad.Trans.Error-import Control.Monad.Trans.List-import Control.Monad.Trans.Reader-import qualified Control.Monad.Trans.Writer.Lazy as L-import qualified Control.Monad.Trans.Writer.Strict as S-import qualified Control.Monad.Trans.State.Lazy as L-import qualified Control.Monad.Trans.State.Strict as S-import qualified Control.Monad.Trans.RWS.Lazy as L-import qualified Control.Monad.Trans.RWS.Strict as S-import Control.Monad.Trans.Control--class MonadBase η μ ⇒ MonadBaseControl η μ | μ → η where-  -- | Helper for lifting control operations from the base monad.-  liftBaseControl ∷ (RunInBase μ η → η α) → μ α--instance MonadBaseControl IO IO where-  liftBaseControl = idLiftControl--instance MonadBaseControl η μ ⇒ MonadBaseControl η (IdentityT μ) where-  liftBaseControl = liftLiftControlBase liftBaseControl--instance MonadBaseControl η μ ⇒ MonadBaseControl η (MaybeT μ) where-  liftBaseControl = liftLiftControlBase liftBaseControl--instance (Error e, MonadBaseControl η μ)-       ⇒ MonadBaseControl η (ErrorT e μ) where-  liftBaseControl = liftLiftControlBase liftBaseControl--instance MonadBaseControl η μ ⇒ MonadBaseControl η (ListT μ) where-  liftBaseControl = liftLiftControlBase liftBaseControl--instance MonadBaseControl η μ ⇒ MonadBaseControl η (ReaderT r μ) where-  liftBaseControl = liftLiftControlBase liftBaseControl--instance (Monoid w, MonadBaseControl η μ)-       ⇒ MonadBaseControl η (L.WriterT w μ) where-  liftBaseControl = liftLiftControlBase liftBaseControl--instance (Monoid w, MonadBaseControl η μ)-       ⇒ MonadBaseControl η (S.WriterT w μ) where-  liftBaseControl = liftLiftControlBase liftBaseControl--instance MonadBaseControl η μ ⇒ MonadBaseControl η (L.StateT s μ) where-  liftBaseControl = liftLiftControlBase liftBaseControl--instance MonadBaseControl η μ ⇒ MonadBaseControl η (S.StateT s μ) where-  liftBaseControl = liftLiftControlBase liftBaseControl--instance (Monoid w, MonadBaseControl η μ)-       ⇒ MonadBaseControl η (L.RWST r w s μ) where-  liftBaseControl = liftLiftControlBase liftBaseControl--instance (Monoid w, MonadBaseControl η μ)-       ⇒ MonadBaseControl η (S.RWST r w s μ) where-  liftBaseControl = liftLiftControlBase liftBaseControl--controlBase ∷ MonadBaseControl η μ ⇒ (RunInBase μ η → η (μ α)) → μ α-controlBase = join . liftBaseControl--liftBaseOp ∷ MonadBaseControl η μ-           ⇒ ((α → η (μ β)) → η (μ γ))-           →  (α →    μ β ) →    μ γ-liftBaseOp base m = controlBase $ \runInBase → base $ runInBase . m--liftBaseOp_ ∷ MonadBaseControl η μ-           ⇒ (η (μ β) → η (μ γ))-           →     μ β  →    μ γ-liftBaseOp_ base m = controlBase $ \runInBase → base $ runInBase m-
transformers-base.cabal view
@@ -1,5 +1,5 @@ Name: transformers-base-Version: 0.3+Version: 0.4 Category: Control Stability: experimental Synopsis: Lift computations from the bottom of a transformer stack@@ -10,9 +10,13 @@ Homepage: https://github.com/mvv/transformers-base Bug-Reports: https://github.com/mvv/transformers-base/issues -Author: Mikhail Vorozhtsov <mikhail.vorozhtsov@gmail.com>+Author:+  Mikhail Vorozhtsov <mikhail.vorozhtsov@gmail.com>,+  Bas van Dijk <v.dijk.bas@gmail.com> Maintainer: Mikhail Vorozhtsov <mikhail.vorozhtsov@gmail.com>-Copyright: 2011 Mikhail Vorozhtsov <mikhail.vorozhtsov@gmail.com>+Copyright:+  2011 Mikhail Vorozhtsov <mikhail.vorozhtsov@gmail.com>,+       Bas van Dijk <v.dijk.bas@gmail.com> License: BSD3 License-File: LICENSE @@ -26,11 +30,8 @@ Library   Build-Depends:     base          >= 4.4 && < 5,-    transformers  >= 0.2,-    monad-control >= 0.2.0.2+    transformers  >= 0.2   Hs-Source-Dirs: src   GHC-Options: -Wall   Exposed-Modules:     Control.Monad.Base-    Control.Monad.Base.Control-