comonads-fd 1.4.0 → 1.5.0
raw patch · 5 files changed
+55/−54 lines, 5 filesdep ~comonad-transformersPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: comonad-transformers
API changes (from Hackage documentation)
- Control.Comonad.Store.Class: experiment :: (ComonadStore s w, Functor f) => f (s -> s) -> w a -> f a
- Control.Comonad.Store.Class: get :: ComonadStore s w => w a -> s
- Control.Comonad.Store.Class: gets :: ComonadStore s w => (s -> t) -> w a -> t
- Control.Comonad.Store.Class: lowerGet :: (ComonadTrans t, ComonadStore s w) => t w a -> s
- Control.Comonad.Store.Class: modify :: ComonadStore s w => (s -> s) -> w a -> w a
- Control.Comonad.Store.Class: put :: ComonadStore s w => s -> w a -> w a
- Control.Comonad.Store.Lazy: experiment :: (ComonadStore s w, Functor f) => f (s -> s) -> w a -> f a
- Control.Comonad.Store.Lazy: get :: ComonadStore s w => w a -> s
- Control.Comonad.Store.Lazy: gets :: ComonadStore s w => (s -> t) -> w a -> t
- Control.Comonad.Store.Lazy: modify :: ComonadStore s w => (s -> s) -> w a -> w a
- Control.Comonad.Store.Lazy: put :: ComonadStore s w => s -> w a -> w a
- Control.Comonad.Store.Memo: experiment :: (ComonadStore s w, Functor f) => f (s -> s) -> w a -> f a
- Control.Comonad.Store.Memo: get :: ComonadStore s w => w a -> s
- Control.Comonad.Store.Memo: gets :: ComonadStore s w => (s -> t) -> w a -> t
- Control.Comonad.Store.Memo: modify :: ComonadStore s w => (s -> s) -> w a -> w a
- Control.Comonad.Store.Memo: put :: ComonadStore s w => s -> w a -> w a
- Control.Comonad.Store.Strict: experiment :: (ComonadStore s w, Functor f) => f (s -> s) -> w a -> f a
- Control.Comonad.Store.Strict: get :: ComonadStore s w => w a -> s
- Control.Comonad.Store.Strict: gets :: ComonadStore s w => (s -> t) -> w a -> t
- Control.Comonad.Store.Strict: modify :: ComonadStore s w => (s -> s) -> w a -> w a
- Control.Comonad.Store.Strict: put :: ComonadStore s w => s -> w a -> w a
+ Control.Comonad.Store.Class: lowerPeek :: (ComonadTrans t, ComonadStore s w) => s -> t w a -> a
+ Control.Comonad.Store.Class: lowerPos :: (ComonadTrans t, ComonadStore s w) => t w a -> s
+ Control.Comonad.Store.Class: peek :: ComonadStore s w => s -> w a -> a
+ Control.Comonad.Store.Class: peeks :: ComonadStore s w => (s -> s) -> w a -> a
+ Control.Comonad.Store.Class: pos :: ComonadStore s w => w a -> s
+ Control.Comonad.Store.Class: seek :: ComonadStore s w => s -> w a -> w a
+ Control.Comonad.Store.Class: seeks :: ComonadStore s w => (s -> s) -> w a -> w a
+ Control.Comonad.Store.Lazy: peek :: ComonadStore s w => s -> w a -> a
+ Control.Comonad.Store.Lazy: peeks :: ComonadStore s w => (s -> s) -> w a -> a
+ Control.Comonad.Store.Lazy: pos :: ComonadStore s w => w a -> s
+ Control.Comonad.Store.Lazy: seek :: ComonadStore s w => s -> w a -> w a
+ Control.Comonad.Store.Lazy: seeks :: ComonadStore s w => (s -> s) -> w a -> w a
+ Control.Comonad.Store.Memo: peek :: ComonadStore s w => s -> w a -> a
+ Control.Comonad.Store.Memo: peeks :: ComonadStore s w => (s -> s) -> w a -> a
+ Control.Comonad.Store.Memo: pos :: ComonadStore s w => w a -> s
+ Control.Comonad.Store.Memo: seek :: ComonadStore s w => s -> w a -> w a
+ Control.Comonad.Store.Memo: seeks :: ComonadStore s w => (s -> s) -> w a -> w a
+ Control.Comonad.Store.Strict: peek :: ComonadStore s w => s -> w a -> a
+ Control.Comonad.Store.Strict: peeks :: ComonadStore s w => (s -> s) -> w a -> a
+ Control.Comonad.Store.Strict: pos :: ComonadStore s w => w a -> s
+ Control.Comonad.Store.Strict: seek :: ComonadStore s w => s -> w a -> w a
+ Control.Comonad.Store.Strict: seeks :: ComonadStore s w => (s -> s) -> w a -> w a
Files
- Control/Comonad/Store/Class.hs +50/−43
- Control/Comonad/Store/Lazy.hs +1/−3
- Control/Comonad/Store/Memo.hs +1/−3
- Control/Comonad/Store/Strict.hs +1/−3
- comonads-fd.cabal +2/−2
Control/Comonad/Store/Class.hs view
@@ -11,9 +11,8 @@ ---------------------------------------------------------------------------- module Control.Comonad.Store.Class ( ComonadStore(..)- , gets- , experiment- , lowerGet+ , lowerPos+ , lowerPeek ) where import Control.Comonad@@ -37,69 +36,77 @@ import Data.Semigroup class Comonad w => ComonadStore s w | w -> s where- get :: w a -> s- put :: s -> w a -> w a- modify :: (s -> s) -> w a -> w a- modify f wa = put (f (get wa)) wa--gets :: ComonadStore s w => (s -> t) -> w a -> t-gets f wa = f (get wa)-{-# INLINE gets #-}+ pos :: w a -> s+ peek :: s -> w a -> a -experiment :: (ComonadStore s w, Functor f) => f (s -> s) -> w a -> f a-experiment ff wa = fmap (\f -> extract (modify f wa)) ff-{-# INLINE experiment #-}+ peeks :: (s -> s) -> w a -> a+ peeks f w = peek (f (pos w)) w+ + seek :: s -> w a -> w a+ seek s = peek s . duplicate+ + seeks :: (s -> s) -> w a -> w a+ seeks f = peeks f . duplicate instance Comonad w => ComonadStore s (Strict.StoreT s w) where- get = Strict.get- put = Strict.put- modify = Strict.modify+ pos = Strict.pos+ peek = Strict.peek+ peeks = Strict.peeks+ seek = Strict.seek+ seeks = Strict.seeks instance Comonad w => ComonadStore s (Lazy.StoreT s w) where- get = Lazy.get- put = Lazy.put- modify = Lazy.modify+ pos = Lazy.pos+ peek = Lazy.peek+ peeks = Lazy.peeks+ seek = Lazy.seek+ seeks = Lazy.seeks instance Comonad w => ComonadStore s (Memo.StoreT s w) where- get = Memo.get- put = Memo.put- modify = Memo.modify+ pos = Memo.pos+ peek = Memo.peek+ peeks = Memo.peeks+ seek = Memo.seek+ seeks = Memo.seeks -- All of these require UndecidableInstances because they do not satisfy the coverage condition -lowerGet :: (ComonadTrans t, ComonadStore s w) => t w a -> s-lowerGet = get . lower-{-# INLINE lowerGet #-}+lowerPos :: (ComonadTrans t, ComonadStore s w) => t w a -> s+lowerPos = pos . lower+{-# INLINE lowerPos #-} +lowerPeek :: (ComonadTrans t, ComonadStore s w) => s -> t w a -> a+lowerPeek s = peek s . lower+{-# INLINE lowerPeek #-}+ instance ComonadStore s w => ComonadStore s (Lazy.DiscontT k w) where- get = lowerGet- put s ~(Lazy.DiscontT f wa) = Lazy.DiscontT f (put s wa)+ pos = lowerPos+ peek = lowerPeek instance ComonadStore s w => ComonadStore s (Memo.DiscontT k w) where- get = lowerGet- put s w = Memo.discontT f (put s wa)- where (f, wa) = Memo.runDiscontT w+ pos = lowerPos+ peek = lowerPeek instance ComonadStore s w => ComonadStore s (Strict.DiscontT k w) where- get = lowerGet- put s (Strict.DiscontT f wa) = Strict.DiscontT f (put s wa)+ pos = lowerPos+ peek = lowerPeek instance ComonadStore s w => ComonadStore s (IdentityT w) where- get = lowerGet- put s = IdentityT . put s . runIdentityT+ pos = lowerPos+ peek = lowerPeek instance ComonadStore s w => ComonadStore s (Lazy.EnvT e w) where- get = lowerGet- put s ~(Lazy.EnvT e wa) = Lazy.EnvT e (put s wa)+ pos = lowerPos+ peek = lowerPeek instance ComonadStore s w => ComonadStore s (Strict.EnvT e w) where- get = lowerGet- put s (Strict.EnvT e wa) = Strict.EnvT e (put s wa)+ pos = lowerPos+ peek = lowerPeek instance (ComonadStore s w, Semigroup m, Monoid m) => ComonadStore s (Simple.TracedT m w) where- get = lowerGet- put s (Simple.TracedT wma) = Simple.TracedT (put s wma)+ pos = lowerPos+ peek = lowerPeek instance (ComonadStore s w, Monoid m) => ComonadStore s (Memo.TracedT m w) where- get = lowerGet- put s = Memo.tracedT . put s . Memo.runTracedT+ pos = lowerPos+ peek = lowerPeek
Control/Comonad/Store/Lazy.hs view
@@ -11,8 +11,6 @@ module Control.Comonad.Store.Lazy ( -- * ComonadStore class ComonadStore(..)- , gets- , experiment -- * The Store comonad , Store , store@@ -26,6 +24,6 @@ ) where import Control.Comonad-import Control.Comonad.Store.Class (ComonadStore(..), gets, experiment)+import Control.Comonad.Store.Class (ComonadStore(..)) import Control.Comonad.Trans.Class import Control.Comonad.Trans.Store.Lazy (Store, store, runStore, StoreT(..), runStoreT)
Control/Comonad/Store/Memo.hs view
@@ -11,8 +11,6 @@ module Control.Comonad.Store.Memo ( -- * ComonadStore class ComonadStore(..)- , gets- , experiment -- * The Store comonad , Store , store@@ -27,6 +25,6 @@ ) where import Control.Comonad-import Control.Comonad.Store.Class (ComonadStore(..), gets, experiment)+import Control.Comonad.Store.Class (ComonadStore(..)) import Control.Comonad.Trans.Class import Control.Comonad.Trans.Store.Memo (Store, store, runStore, StoreT, storeT, runStoreT)
Control/Comonad/Store/Strict.hs view
@@ -11,8 +11,6 @@ module Control.Comonad.Store.Strict ( -- * ComonadStore class ComonadStore(..)- , gets- , experiment -- * The Store comonad , Store , store@@ -26,6 +24,6 @@ ) where import Control.Comonad-import Control.Comonad.Store.Class (ComonadStore(..), gets, experiment)+import Control.Comonad.Store.Class (ComonadStore(..)) import Control.Comonad.Trans.Class import Control.Comonad.Trans.Store.Strict (Store, store, runStore, StoreT(..), runStoreT)
comonads-fd.cabal view
@@ -1,6 +1,6 @@ name: comonads-fd category: Control, Comonads-version: 1.4.0+version: 1.5.0 license: BSD3 cabal-version: >= 1.6 license-file: LICENSE@@ -23,7 +23,7 @@ transformers >= 0.2 && < 0.3, semigroups >= 0.3.4 && < 0.4, comonad >= 1.0 && < 1.1,- comonad-transformers >= 1.4 && < 1.5+ comonad-transformers >= 1.5 && < 1.6 exposed-modules: Control.Comonad.Discont