kan-extensions 0.5.0 → 0.5.1
raw patch · 2 files changed
+10/−2 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Control.Monad.Codensity: improve :: Functor f => (forall m. MonadFree f m => m a) -> Free f a
Files
- Control/Monad/Codensity.hs +9/−1
- kan-extensions.cabal +1/−1
Control/Monad/Codensity.hs view
@@ -15,12 +15,14 @@ , lowerCodensity , codensityToAdjunction , adjunctionToCodensity+ , improve ) where import Control.Applicative import Control.Monad.Reader.Class import Control.Monad.State.Class import Control.Monad.Free.Class+import Control.Monad.Free import Control.Monad (ap, MonadPlus(..)) import Data.Functor.Adjunction import Data.Functor.Apply@@ -56,7 +58,7 @@ instance MonadPlus v => MonadPlus (Codensity v) where mzero = Codensity (\_ -> mzero) Codensity m `mplus` Codensity n = Codensity (\k -> m k `mplus` n k)- + lowerCodensity :: Monad m => Codensity m a -> m a lowerCodensity a = runCodensity a return @@ -72,4 +74,10 @@ instance MonadReader r m => MonadState r (Codensity m) where get = Codensity (ask >>=) put s = Codensity (\k -> local (const s) (k ()))++-- | Right associate all binds in a computation that generates a free monad+-- This can improve the asymptotic efficiency of the result, while preserving+-- semantics.+improve :: Functor f => (forall m. MonadFree f m => m a) -> Free f a+improve m = lowerCodensity m
kan-extensions.cabal view
@@ -1,6 +1,6 @@ name: kan-extensions category: Data Structures, Monads, Comonads, Functors-version: 0.5.0+version: 0.5.1 license: BSD3 cabal-version: >= 1.6 license-file: LICENSE