monad-supply 0.1 → 0.2
raw patch · 2 files changed
+19/−2 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Control.Monad.Supply: instance (Error e, MonadSupply s m) => MonadSupply s (ErrorT e m)
+ Control.Monad.Supply: instance (Monoid w, MonadSupply s m) => MonadSupply s (WriterT w m)
+ Control.Monad.Supply: instance MonadSupply s m => MonadSupply s (ReaderT r m)
+ Control.Monad.Supply: instance MonadSupply s m => MonadSupply s (StateT st m)
+ Control.Monad.Supply: supply :: MonadSupply s m => m s
Files
- monad-supply.cabal +1/−1
- src/Control/Monad/Supply.hs +18/−1
monad-supply.cabal view
@@ -1,6 +1,6 @@ Name: monad-supply Build-type: Simple-Version: 0.1+Version: 0.2 Cabal-Version: >= 1.6 Synopsis: Stateful supply monad. Description: Support for computations which consume values from a (possibly infinite) supply.
src/Control/Monad/Supply.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE MultiParamTypeClasses #-} @@ -7,7 +8,7 @@ -- supply. See http://www.haskell.org/haskellwiki/New_monads/MonadSupply for -- details. module Control.Monad.Supply-( MonadSupply+( MonadSupply (..) , SupplyT , Supply , evalSupplyT@@ -19,6 +20,9 @@ import Control.Monad.Identity import Control.Monad.State+import Control.Monad.Error+import Control.Monad.Reader+import Control.Monad.Writer import Data.Monoid class Monad m => MonadSupply s m | m -> s where@@ -36,6 +40,19 @@ supply = SupplyT $ do (x:xs) <- get put xs return x++-- Monad transformer instances+instance (Error e,MonadSupply s m) => MonadSupply s (ErrorT e m) where+ supply = lift supply++instance MonadSupply s m => MonadSupply s (StateT st m) where+ supply = lift supply++instance MonadSupply s m => MonadSupply s (ReaderT r m) where+ supply = lift supply++instance (Monoid w, MonadSupply s m) => MonadSupply s (WriterT w m) where+ supply = lift supply -- | Monoid instance for the supply monad. Actually any monad/monoid pair gives -- rise to this monoid instance, but we can't write it like that because it