comonad 4.2.3 → 4.2.4
raw patch · 3 files changed
+15/−3 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Control.Comonad: kfix :: ComonadApply w => w (w a -> a) -> w a
Files
- CHANGELOG.markdown +4/−0
- comonad.cabal +1/−1
- src/Control/Comonad.hs +10/−2
CHANGELOG.markdown view
@@ -1,3 +1,7 @@+4.2.4+-----+* Added Kenneth Foner's fixed point as `kfix`.+ 4.2.3 ----- * Add `Comonad` and `ComonadEnv` instances for `Arg e` from `semigroups 0.16.3` which can be used to extract the argmin or argmax.
comonad.cabal view
@@ -1,6 +1,6 @@ name: comonad category: Control, Comonads-version: 4.2.3+version: 4.2.4 license: BSD3 cabal-version: >= 1.10 license-file: LICENSE
src/Control/Comonad.hs view
@@ -24,6 +24,7 @@ , liftW -- :: Comonad w => (a -> b) -> w a -> w b , wfix -- :: Comonad w => w (w a -> a) -> a , cfix -- :: Comonad w => (w a -> a) -> w a+ , kfix -- :: ComonadApply w => w (w a -> a) -> w a , (=>=) , (=<=) , (<<=)@@ -276,14 +277,21 @@ liftW f = extend (f . extract) {-# INLINE liftW #-} --- | Comonadic fixed point à la Menendez+-- | Comonadic fixed point à la David Menendez wfix :: Comonad w => w (w a -> a) -> a wfix w = extract w (extend wfix w) --- | Comonadic fixed point à la Orchard+-- | Comonadic fixed point à la Dominic Orchard cfix :: Comonad w => (w a -> a) -> w a cfix f = fix (extend f) {-# INLINE cfix #-}++-- | Comonadic fixed point à la Kenneth Foner:+--+-- This is the @evaluate@ function from his <https://www.youtube.com/watch?v=F7F-BzOB670 "Getting a Quick Fix on Comonads"> talk.+kfix :: ComonadApply w => w (w a -> a) -> w a+kfix w = fix $ \u -> w <@> duplicate u+{-# INLINE kfix #-} -- | 'extend' with the arguments swapped. Dual to '>>=' for a 'Monad'. (=>>) :: Comonad w => w a -> (w a -> b) -> w b