comonads-fd 0.7.0 → 0.9.0
raw patch · 4 files changed
+91/−37 lines, 4 filesdep +semigroupsdep ~comonaddep ~comonad-transformersPVP ok
version bump matches the API change (PVP)
Dependencies added: semigroups
Dependency ranges changed: comonad, comonad-transformers
API changes (from Hackage documentation)
- Control.Comonad.Store.Class: instance (ComonadStore s w, Monoid m) => ComonadStore s (TracedT m w)
- Control.Comonad.Traced.Class: instance (Comonad w, Monoid m) => ComonadTraced m (TracedT m w)
+ Control.Comonad.Env.Class: instance (ComonadEnv e w, Functor f) => ComonadEnv e (StreamT f w)
+ Control.Comonad.Env.Class: instance (ComonadEnv e w, Semigroup m, Monoid m) => ComonadEnv e (TracedT m w)
+ Control.Comonad.Store.Class: instance (ComonadStore s w, Functor f) => ComonadStore s (StreamT f w)
+ Control.Comonad.Store.Class: instance (ComonadStore s w, Semigroup m, Monoid m) => ComonadStore s (TracedT m w)
+ Control.Comonad.Traced.Class: instance (Comonad w, Semigroup m, Monoid m) => ComonadTraced m (TracedT m w)
Files
- Control/Comonad/Env/Class.hs +29/−8
- Control/Comonad/Store/Class.hs +34/−16
- Control/Comonad/Traced/Class.hs +24/−10
- comonads-fd.cabal +4/−3
Control/Comonad/Env/Class.hs view
@@ -16,11 +16,17 @@ import Control.Comonad import Control.Comonad.Trans.Class-import qualified Control.Comonad.Trans.Env as T--- import qualified Control.Comonad.Trans.Pointer as P-import Control.Comonad.Trans.Store-import Control.Comonad.Trans.Discont+import qualified Control.Comonad.Trans.Env.Lazy as Lazy+import qualified Control.Comonad.Trans.Store.Lazy as Lazy+import qualified Control.Comonad.Trans.Discont.Lazy as Lazy+import qualified Control.Comonad.Trans.Env.Strict as Strict+import qualified Control.Comonad.Trans.Store.Strict as Strict+import qualified Control.Comonad.Trans.Discont.Strict as Strict+import Control.Comonad.Trans.Traced+import Control.Comonad.Trans.Stream import Control.Comonad.Trans.Identity +import Data.Monoid+import Data.Semigroup -- import Data.Ix class Comonad w => ComonadEnv e w | w -> e where@@ -30,9 +36,12 @@ asks f wa = f (ask wa) {-# INLINE asks #-} -instance Comonad w => ComonadEnv e (T.EnvT e w) where- ask = T.ask+instance Comonad w => ComonadEnv e (Lazy.EnvT e w) where+ ask = Lazy.ask +instance Comonad w => ComonadEnv e (Strict.EnvT e w) where+ ask = Strict.ask+ instance ComonadEnv e ((,)e) where ask = fst @@ -45,11 +54,23 @@ -- instance (ComonadEnv e w, Ix i) => ComonadEnv e (PointerT i w) where -- ask = lowerAsk -instance ComonadEnv e w => ComonadEnv e (StoreT t w) where+instance ComonadEnv e w => ComonadEnv e (Strict.StoreT t w) where ask = lowerAsk -instance ComonadEnv e w => ComonadEnv e (DiscontT t w) where+instance ComonadEnv e w => ComonadEnv e (Strict.DiscontT t w) where ask = lowerAsk +instance ComonadEnv e w => ComonadEnv e (Lazy.StoreT t w) where+ ask = lowerAsk++instance ComonadEnv e w => ComonadEnv e (Lazy.DiscontT t w) where+ ask = lowerAsk+ instance ComonadEnv e w => ComonadEnv e (IdentityT w) where+ ask = lowerAsk++instance (ComonadEnv e w, Semigroup m, Monoid m) => ComonadEnv e (TracedT m w) where+ ask = lowerAsk++instance (ComonadEnv e w, Functor f) => ComonadEnv e (StreamT f w) where ask = lowerAsk
Control/Comonad/Store/Class.hs view
@@ -17,12 +17,17 @@ import Control.Comonad import Control.Comonad.Trans.Class-import qualified Control.Comonad.Trans.Store as T-import Control.Comonad.Trans.Discont-import Control.Comonad.Trans.Env+import qualified Control.Comonad.Trans.Store.Strict as Strict+import qualified Control.Comonad.Trans.Store.Lazy as Lazy+import qualified Control.Comonad.Trans.Discont.Strict as Strict+import qualified Control.Comonad.Trans.Discont.Lazy as Lazy+import qualified Control.Comonad.Trans.Env.Strict as Strict+import qualified Control.Comonad.Trans.Env.Lazy as Lazy+import Control.Comonad.Trans.Stream import Control.Comonad.Trans.Identity import Control.Comonad.Trans.Traced import Data.Monoid+import Data.Semigroup -- import qualified Control.Comonad.Trans.Pointer as P -- import Data.Ix @@ -41,17 +46,15 @@ experiment ff wa = fmap (`modify` wa) ff {-# INLINE experiment #-} -instance Comonad w => ComonadStore s (T.StoreT s w) where- get = T.get- put = T.put- modify = T.modify+instance Comonad w => ComonadStore s (Strict.StoreT s w) where+ get = Strict.get+ put = Strict.put+ modify = Strict.modify -{--instance (Comonad w, Ix i) => ComonadStore i (P.PointerT i w) where- get = P.get- put = P.put- modify = P.modify--}+instance Comonad w => ComonadStore s (Lazy.StoreT s w) where+ get = Lazy.get+ put = Lazy.put+ modify = Lazy.modify -- All of these require UndecidableInstances because they do not satisfy the coverage condition @@ -67,22 +70,37 @@ lowerModify f = modify f . lower {-# INLINE lowerModify #-} -instance ComonadStore s w => ComonadStore s (DiscontT k w) where+instance ComonadStore s w => ComonadStore s (Lazy.DiscontT k w) where get = lowerGet put = lowerPut modify = lowerModify +instance ComonadStore s w => ComonadStore s (Strict.DiscontT k w) where+ get = lowerGet+ put = lowerPut+ modify = lowerModify+ instance ComonadStore s w => ComonadStore s (IdentityT w) where get = lowerGet put = lowerPut modify = lowerModify -instance ComonadStore s w => ComonadStore s (EnvT e w) where+instance ComonadStore s w => ComonadStore s (Lazy.EnvT e w) where get = lowerGet put = lowerPut modify = lowerModify -instance (ComonadStore s w, Monoid m) => ComonadStore s (TracedT m w) where+instance ComonadStore s w => ComonadStore s (Strict.EnvT e w) where+ get = lowerGet+ put = lowerPut+ modify = lowerModify++instance (ComonadStore s w, Semigroup m, Monoid m) => ComonadStore s (TracedT m w) where+ get = lowerGet+ put = lowerPut+ modify = lowerModify++instance (ComonadStore s w, Functor f) => ComonadStore s (StreamT f w) where get = lowerGet put = lowerPut modify = lowerModify
Control/Comonad/Traced/Class.hs view
@@ -16,12 +16,17 @@ import Control.Comonad import Control.Comonad.Trans.Class-import qualified Control.Comonad.Trans.Traced as T-import Control.Comonad.Trans.Discont-import Control.Comonad.Trans.Env-import Control.Comonad.Trans.Store+import Control.Comonad.Trans.Traced (TracedT)+import qualified Control.Comonad.Trans.Traced as TracedT+import Control.Comonad.Trans.Env.Strict as Strict+import Control.Comonad.Trans.Store.Strict as Strict+import Control.Comonad.Trans.Discont.Strict as Strict+import Control.Comonad.Trans.Env.Lazy as Lazy+import Control.Comonad.Trans.Store.Lazy as Lazy+import Control.Comonad.Trans.Discont.Lazy as Lazy import Control.Comonad.Trans.Identity import Data.Monoid+import Data.Semigroup class Comonad w => ComonadTraced m w | w -> m where trace :: m -> w a -> a@@ -30,8 +35,8 @@ traces f wa = trace (f (extract wa)) wa {-# INLINE traces #-} -instance (Comonad w, Monoid m) => ComonadTraced m (T.TracedT m w) where- trace = T.trace+instance (Comonad w, Semigroup m, Monoid m) => ComonadTraced m (TracedT m w) where+ trace = TracedT.trace lowerTrace :: (ComonadTrans t, ComonadTraced m w) => m -> t w a -> a lowerTrace m = trace m . lower@@ -39,14 +44,23 @@ -- All of these require UndecidableInstances because they do not satisfy the coverage condition -instance ComonadTraced m w => ComonadTraced m (DiscontT k w) where+instance ComonadTraced m w => ComonadTraced m (IdentityT w) where trace = lowerTrace -instance ComonadTraced m w => ComonadTraced m (IdentityT w) where+instance ComonadTraced m w => ComonadTraced m (Strict.EnvT e w) where trace = lowerTrace -instance ComonadTraced m w => ComonadTraced m (EnvT e w) where+instance ComonadTraced m w => ComonadTraced m (Strict.DiscontT k w) where trace = lowerTrace -instance ComonadTraced m w => ComonadTraced m (StoreT s w) where+instance ComonadTraced m w => ComonadTraced m (Strict.StoreT s w) where+ trace = lowerTrace++instance ComonadTraced m w => ComonadTraced m (Lazy.EnvT e w) where+ trace = lowerTrace++instance ComonadTraced m w => ComonadTraced m (Lazy.DiscontT k w) where+ trace = lowerTrace++instance ComonadTraced m w => ComonadTraced m (Lazy.StoreT s w) where trace = lowerTrace
comonads-fd.cabal view
@@ -1,6 +1,6 @@ name: comonads-fd category: Control, Comonads-version: 0.7.0+version: 0.9.0 license: BSD3 cabal-version: >= 1.6 license-file: LICENSE@@ -21,8 +21,9 @@ build-depends: base >= 4 && < 4.4, transformers >= 0.2 && < 0.3,- comonad >= 0.7 && < 0.8,- comonad-transformers >= 0.7 && < 0.8+ semigroups >= 0.3.4 && < 0.4,+ comonad >= 0.9 && < 0.10,+ comonad-transformers >= 0.9 && < 0.10 exposed-modules: Control.Comonad.Env