mtl-unleashed 0.3.1 → 0.3.2
raw patch · 3 files changed
+10/−8 lines, 3 filesdep ~lens
Dependency ranges changed: lens
Files
- Control/Monad/States.hs +5/−4
- Tests/Main.hs +2/−1
- mtl-unleashed.cabal +3/−3
Control/Monad/States.hs view
@@ -10,13 +10,14 @@ , Control.Monad.States.use, Control.Monad.States.iuse, Control.Monad.States.uses, Control.Monad.States.iuses ) where -import qualified Control.Lens as Lens (Optical, view, views)+import qualified Control.Lens as Lens (view, views) import Control.Lens hiding (view, views, iview, iviews, uses) import Control.Monad.Readers import Control.Monad.State hiding (MonadState(get, put, state), modify, modify', gets) import qualified Control.Monad.State as MTL (get, put) import Control.Monad.Writer (WriterT)-import Data.Profunctor.Unsafe ((#.), (.#))+import Data.Monoid (Monoid)+import Data.Profunctor.Unsafe ((#.)) -- | Copy of 'Control.Monad.State.MonadState' with functional dependency m -> s removed. class Monad m => MonadStates s m where@@ -63,8 +64,8 @@ iuse :: MonadStates s m => IndexedGetting i (i,a) s a -> m (i,a) iuse l = Control.Monad.States.gets (getConst #. l (Indexed $ \i -> Const #. (,) i)) -uses :: (Profunctor p, MonadStates s m) => Lens.Optical p (->) (Const r) s s a a -> p a r -> m r+uses :: MonadStates s m => LensLike' (Const r) s a -> (a -> r) -> m r uses l f = Control.Monad.States.gets (Lens.views l f) iuses :: MonadStates s m => IndexedGetting i r s a -> (i -> a -> r) -> m r-iuses l = uses l .# Indexed+iuses l f = Control.Monad.States.gets (getConst #. l (Const #. Indexed f))
Tests/Main.hs view
@@ -6,6 +6,7 @@ {-# LANGUAGE TemplateHaskell #-} module Main where +import Control.Applicative import Control.Lens as Lens import Control.Monad.Readers as Readers import Control.Monad.States as States@@ -51,7 +52,7 @@ -- This is where the advantages of MonadReaders start to appear: -- use two different MonadReaders instances for the same monad.-s1t1 :: (MonadReaders S m, MonadReaders T m) => m (Float, Int)+s1t1 :: (Applicative m, Functor m, MonadReaders S m, MonadReaders T m) => m (Float, Int) s1t1 = (,) <$> Readers.view s1 <*> Readers.view t1 tests :: SpecM () ()
mtl-unleashed.cabal view
@@ -1,5 +1,5 @@ name: mtl-unleashed-version: 0.3.1+version: 0.3.2 cabal-version: >= 1.10 build-type: Simple license: BSD3@@ -19,7 +19,7 @@ extra type signatures. library- build-depends: base < 5, lens, mtl, contravariant, profunctors, tagged+ build-depends: base < 5, lens >= 4.13, mtl, contravariant, profunctors, tagged ghc-options: -Wall -O2 exposed-modules: Control.Monad.Readers@@ -30,7 +30,7 @@ type: exitcode-stdio-1.0 hs-source-dirs: Tests main-is: Main.hs- build-depends: base, hspec, hspec-core, lens, mtl, mtl-unleashed, contravariant, profunctors+ build-depends: base, hspec, hspec-core, lens >= 4.13, mtl, mtl-unleashed, contravariant, profunctors default-language: Haskell2010 source-repository head