packages feed

comonads-fd 3.0 → 3.0.1

raw patch · 16 files changed

+311/−302 lines, 16 filesdep ~comonaddep ~comonad-transformersdep ~semigroupsPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: comonad, comonad-transformers, semigroups

API changes (from Hackage documentation)

Files

.travis.yml view
@@ -1,1 +1,8 @@ language: haskell+notifications:+  irc:+    channels:+      - "irc.freenode.org#haskell-lens"+    skip_join: true+    template:+      - "\x0313comonads-fd\x03/\x0306%{branch}\x03 \x0314%{commit}\x03 %{build_url} %{message}"
− Control/Comonad/Env.hs
@@ -1,38 +0,0 @@--------------------------------------------------------------------------------- |--- Module      :  Control.Comonad.Env--- Copyright   :  (C) 2008-2011 Edward Kmett--- License     :  BSD-style (see the file LICENSE)------ Maintainer  :  Edward Kmett <ekmett@gmail.com>--- Stability   :  experimental--- Portability :  non-portable (fundeps, MPTCs)------ The Env comonad (aka the Coreader, Environment, or Product comonad)------ A co-Kleisli arrow in the Env comonad is isomorphic to a Kleisli arrow--- in the reader monad.------ (a -> e -> m) ~ (a, e) -> m ~ Env e a -> m------------------------------------------------------------------------------module Control.Comonad.Env (-  -- * ComonadEnv class-    ComonadEnv(..)-  , asks-  , local-  -- * The Env comonad-  , Env-  , env-  , runEnv-  -- * The EnvT comonad transformer-  , EnvT(..)-  , runEnvT-  -- * Re-exported modules-  , module Control.Comonad-  , module Control.Comonad.Trans.Class-  ) where--import Control.Comonad-import Control.Comonad.Env.Class (ComonadEnv(..), asks)-import Control.Comonad.Trans.Class-import Control.Comonad.Trans.Env (Env, env, runEnv, EnvT(..), runEnvT, local)
− Control/Comonad/Env/Class.hs
@@ -1,52 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE FunctionalDependencies #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE UndecidableInstances #-}--------------------------------------------------------------------------------- |--- Module      :  Control.Comonad.Env.Class--- Copyright   :  (C) 2008-2012 Edward Kmett--- License     :  BSD-style (see the file LICENSE)------ Maintainer  :  Edward Kmett <ekmett@gmail.com>--- Stability   :  experimental--- Portability :  non-portable (fundeps, MPTCs)------------------------------------------------------------------------------module Control.Comonad.Env.Class-  ( ComonadEnv(..)-  , asks-  ) where--import Control.Comonad-import Control.Comonad.Trans.Class-import qualified Control.Comonad.Trans.Env as Env-import Control.Comonad.Trans.Store-import Control.Comonad.Trans.Traced-import Control.Comonad.Trans.Identity-import Data.Semigroup--class Comonad w => ComonadEnv e w | w -> e where-  ask :: w a -> e--asks :: ComonadEnv e w => (e -> e') -> w a -> e'-asks f wa = f (ask wa)-{-# INLINE asks #-}--instance Comonad w => ComonadEnv e (Env.EnvT e w) where-  ask = Env.ask--instance ComonadEnv e ((,)e) where-  ask = fst--lowerAsk :: (ComonadEnv e w, ComonadTrans t) => t w a -> e-lowerAsk = ask . lower-{-# INLINE lowerAsk #-}--instance ComonadEnv e w => ComonadEnv e (StoreT t w) where-  ask = lowerAsk--instance ComonadEnv e w => ComonadEnv e (IdentityT w) where-  ask = lowerAsk--instance (ComonadEnv e w, Monoid m) => ComonadEnv e (TracedT m w) where-  ask = lowerAsk
− Control/Comonad/Identity.hs
@@ -1,19 +0,0 @@--------------------------------------------------------------------------------- |--- Module      :  Control.Comonad.Identity--- Copyright   :  (C) 2008-2012 Edward Kmett--- License     :  BSD-style (see the file LICENSE)------ Maintainer  :  Edward Kmett <ekmett@gmail.com>--- Stability   :  experimental--- Portability :  non-portable (fundeps, MPTCs)------------------------------------------------------------------------------module Control.Comonad.Identity (-    module Control.Comonad-  , module Data.Functor.Identity-  , module Control.Comonad.Trans.Identity-  ) where--import Control.Comonad-import Data.Functor.Identity-import Control.Comonad.Trans.Identity
− Control/Comonad/Store.hs
@@ -1,29 +0,0 @@--------------------------------------------------------------------------------- |--- Module      :  Control.Comonad.Store--- Copyright   :  (C) 2008-2011 Edward Kmett--- License     :  BSD-style (see the file LICENSE)------ Maintainer  :  Edward Kmett <ekmett@gmail.com>--- Stability   :  experimental--- Portability :  non-portable (fundeps, MPTCs)------------------------------------------------------------------------------module Control.Comonad.Store (-  -- * ComonadStore class-    ComonadStore(..)-  -- * The Store comonad-  , Store-  , store-  , runStore-  -- * The StoreT comonad transformer-  , StoreT(..)-  , runStoreT-  -- * Re-exported modules-  , module Control.Comonad-  , module Control.Comonad.Trans.Class-  ) where--import Control.Comonad-import Control.Comonad.Store.Class (ComonadStore(..))-import Control.Comonad.Trans.Class-import Control.Comonad.Trans.Store (Store, store, runStore, StoreT(..), runStoreT)
− Control/Comonad/Store/Class.hs
@@ -1,78 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE FunctionalDependencies #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE UndecidableInstances #-}--------------------------------------------------------------------------------- |--- Module      :  Control.Comonad.Store.Class--- Copyright   :  (C) 2008-2012 Edward Kmett--- License     :  BSD-style (see the file LICENSE)------ Maintainer  :  Edward Kmett <ekmett@gmail.com>--- Stability   :  experimental--- Portability :  non-portable (fundeps, MPTCs)------------------------------------------------------------------------------module Control.Comonad.Store.Class-  ( ComonadStore(..)-  , lowerPos-  , lowerPeek-  ) where--import Control.Comonad-import Control.Comonad.Trans.Class-import Control.Comonad.Trans.Env-import qualified Control.Comonad.Trans.Store as Store-import Control.Comonad.Trans.Traced-import Control.Comonad.Trans.Identity-import Data.Semigroup--class Comonad w => ComonadStore s w | w -> s where-  pos :: w a -> s-  peek :: s -> w a -> a--  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--  experiment :: Functor f => (s -> f s) -> w a -> f a-  experiment f w = fmap (`peek` w) (f (pos w))--instance Comonad w => ComonadStore s (Store.StoreT s w) where-  pos = Store.pos-  peek = Store.peek-  peeks = Store.peeks-  seek = Store.seek-  seeks = Store.seeks-  experiment = Store.experiment--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 #-}--lowerExperiment :: (ComonadTrans t, ComonadStore s w, Functor f) => (s -> f s) -> t w a -> f a-lowerExperiment f = experiment f . lower-{-# INLINE lowerExperiment #-}--instance ComonadStore s w => ComonadStore s (IdentityT w) where-  pos = lowerPos-  peek = lowerPeek-  experiment = lowerExperiment--instance ComonadStore s w => ComonadStore s (EnvT e w) where-  pos = lowerPos-  peek = lowerPeek-  experiment = lowerExperiment--instance (ComonadStore s w, Monoid m) => ComonadStore s (TracedT m w) where-  pos = lowerPos-  peek = lowerPeek-  experiment = lowerExperiment
− Control/Comonad/Traced.hs
@@ -1,29 +0,0 @@--------------------------------------------------------------------------------- |--- Module      :  Control.Comonad.Traced--- Copyright   :  (C) 2008-2011 Edward Kmett--- License     :  BSD-style (see the file LICENSE)------ Maintainer  :  Edward Kmett <ekmett@gmail.com>--- Stability   :  experimental--- Portability :  non-portable (fundeps, MPTCs)------------------------------------------------------------------------------module Control.Comonad.Traced (-  -- * ComonadTraced class-    ComonadTraced(..)-  , traces-  -- * The Traced comonad-  , Traced-  , traced-  , runTraced-  -- * The TracedT comonad transformer-  , TracedT(..)-  -- * Re-exported modules-  , module Control.Comonad-  , module Control.Comonad.Trans.Class-  ) where--import Control.Comonad-import Control.Comonad.Traced.Class (ComonadTraced(..), traces)-import Control.Comonad.Trans.Class-import Control.Comonad.Trans.Traced (Traced, traced, runTraced, TracedT(..), runTracedT)
− Control/Comonad/Traced/Class.hs
@@ -1,51 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE FunctionalDependencies #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE UndecidableInstances #-}--------------------------------------------------------------------------------- |--- Module      :  Control.Comonad.Traced.Class--- Copyright   :  (C) 2008-2012 Edward Kmett--- License     :  BSD-style (see the file LICENSE)------ Maintainer  :  Edward Kmett <ekmett@gmail.com>--- Stability   :  experimental--- Portability :  non-portable (fundeps, MPTCs)------------------------------------------------------------------------------module Control.Comonad.Traced.Class-  ( ComonadTraced(..)-  , traces-  ) where--import Control.Comonad-import Control.Comonad.Trans.Class-import Control.Comonad.Trans.Env-import Control.Comonad.Trans.Store-import qualified Control.Comonad.Trans.Traced as Traced-import Control.Comonad.Trans.Identity-import Data.Semigroup--class Comonad w => ComonadTraced m w | w -> m where-  trace :: m -> w a -> a--traces :: ComonadTraced m w => (a -> m) -> w a -> a-traces f wa = trace (f (extract wa)) wa-{-# INLINE traces #-}--instance (Comonad w, Monoid m) => ComonadTraced m (Traced.TracedT m w) where-  trace = Traced.trace--lowerTrace :: (ComonadTrans t, ComonadTraced m w) => m -> t w a -> a-lowerTrace m = trace m . lower-{-# INLINE lowerTrace #-}---- All of these require UndecidableInstances because they do not satisfy the coverage condition--instance ComonadTraced m w => ComonadTraced m (IdentityT w) where-  trace = lowerTrace--instance ComonadTraced m w => ComonadTraced m (EnvT e w) where-  trace = lowerTrace--instance ComonadTraced m w => ComonadTraced m (StoreT s w) where-  trace = lowerTrace
comonads-fd.cabal view
@@ -1,6 +1,6 @@ name:          comonads-fd category:      Control, Comonads-version:       3.0+version:       3.0.1 license:       BSD3 cabal-version: >= 1.6 license-file:  LICENSE@@ -9,7 +9,7 @@ stability:     experimental homepage:      http://github.com/ekmett/comonads-fd/ bug-reports:   http://github.com/ekmett/comonads-fd/issues-copyright:     Copyright (C) 2008-2012 Edward A. Kmett+copyright:     Copyright (C) 2008-2013 Edward A. Kmett synopsis:      Comonad transformers using functional dependencies description:   Comonad transformers using functional dependencies build-type:    Simple@@ -25,13 +25,14 @@     FunctionalDependencies     FlexibleInstances     UndecidableInstances+   build-depends:     base                 >= 4       && < 5,     transformers         >= 0.2     && < 0.4,     mtl                  >= 2.0     && < 2.2,-    semigroups           >= 0.8.3.1 && < 0.9,-    comonad              >= 3.0     && < 3.1,-    comonad-transformers >= 3.0     && < 3.1+    semigroups           >= 0.8.3.1,+    comonad              >= 3.0,+    comonad-transformers >= 3.0    exposed-modules:     Control.Comonad.Env@@ -42,5 +43,6 @@     Control.Comonad.Traced     Control.Comonad.Traced.Class -  ghc-options:      -Wall+  ghc-options: -Wall+  hs-source-dirs: src 
+ src/Control/Comonad/Env.hs view
@@ -0,0 +1,38 @@+-----------------------------------------------------------------------------+-- |+-- Module      :  Control.Comonad.Env+-- Copyright   :  (C) 2008-2011 Edward Kmett+-- License     :  BSD-style (see the file LICENSE)+--+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>+-- Stability   :  experimental+-- Portability :  non-portable (fundeps, MPTCs)+--+-- The Env comonad (aka the Coreader, Environment, or Product comonad)+--+-- A co-Kleisli arrow in the Env comonad is isomorphic to a Kleisli arrow+-- in the reader monad.+--+-- (a -> e -> m) ~ (a, e) -> m ~ Env e a -> m+----------------------------------------------------------------------------+module Control.Comonad.Env (+  -- * ComonadEnv class+    ComonadEnv(..)+  , asks+  , local+  -- * The Env comonad+  , Env+  , env+  , runEnv+  -- * The EnvT comonad transformer+  , EnvT(..)+  , runEnvT+  -- * Re-exported modules+  , module Control.Comonad+  , module Control.Comonad.Trans.Class+  ) where++import Control.Comonad+import Control.Comonad.Env.Class (ComonadEnv(..), asks)+import Control.Comonad.Trans.Class+import Control.Comonad.Trans.Env (Env, env, runEnv, EnvT(..), runEnvT, local)
+ src/Control/Comonad/Env/Class.hs view
@@ -0,0 +1,52 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE UndecidableInstances #-}+-----------------------------------------------------------------------------+-- |+-- Module      :  Control.Comonad.Env.Class+-- Copyright   :  (C) 2008-2012 Edward Kmett+-- License     :  BSD-style (see the file LICENSE)+--+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>+-- Stability   :  experimental+-- Portability :  non-portable (fundeps, MPTCs)+----------------------------------------------------------------------------+module Control.Comonad.Env.Class+  ( ComonadEnv(..)+  , asks+  ) where++import Control.Comonad+import Control.Comonad.Trans.Class+import qualified Control.Comonad.Trans.Env as Env+import Control.Comonad.Trans.Store+import Control.Comonad.Trans.Traced+import Control.Comonad.Trans.Identity+import Data.Semigroup++class Comonad w => ComonadEnv e w | w -> e where+  ask :: w a -> e++asks :: ComonadEnv e w => (e -> e') -> w a -> e'+asks f wa = f (ask wa)+{-# INLINE asks #-}++instance Comonad w => ComonadEnv e (Env.EnvT e w) where+  ask = Env.ask++instance ComonadEnv e ((,)e) where+  ask = fst++lowerAsk :: (ComonadEnv e w, ComonadTrans t) => t w a -> e+lowerAsk = ask . lower+{-# INLINE lowerAsk #-}++instance ComonadEnv e w => ComonadEnv e (StoreT t w) where+  ask = lowerAsk++instance ComonadEnv e w => ComonadEnv e (IdentityT w) where+  ask = lowerAsk++instance (ComonadEnv e w, Monoid m) => ComonadEnv e (TracedT m w) where+  ask = lowerAsk
+ src/Control/Comonad/Identity.hs view
@@ -0,0 +1,19 @@+-----------------------------------------------------------------------------+-- |+-- Module      :  Control.Comonad.Identity+-- Copyright   :  (C) 2008-2012 Edward Kmett+-- License     :  BSD-style (see the file LICENSE)+--+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>+-- Stability   :  experimental+-- Portability :  non-portable (fundeps, MPTCs)+----------------------------------------------------------------------------+module Control.Comonad.Identity (+    module Control.Comonad+  , module Data.Functor.Identity+  , module Control.Comonad.Trans.Identity+  ) where++import Control.Comonad+import Data.Functor.Identity+import Control.Comonad.Trans.Identity
+ src/Control/Comonad/Store.hs view
@@ -0,0 +1,29 @@+-----------------------------------------------------------------------------+-- |+-- Module      :  Control.Comonad.Store+-- Copyright   :  (C) 2008-2011 Edward Kmett+-- License     :  BSD-style (see the file LICENSE)+--+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>+-- Stability   :  experimental+-- Portability :  non-portable (fundeps, MPTCs)+----------------------------------------------------------------------------+module Control.Comonad.Store (+  -- * ComonadStore class+    ComonadStore(..)+  -- * The Store comonad+  , Store+  , store+  , runStore+  -- * The StoreT comonad transformer+  , StoreT(..)+  , runStoreT+  -- * Re-exported modules+  , module Control.Comonad+  , module Control.Comonad.Trans.Class+  ) where++import Control.Comonad+import Control.Comonad.Store.Class (ComonadStore(..))+import Control.Comonad.Trans.Class+import Control.Comonad.Trans.Store (Store, store, runStore, StoreT(..), runStoreT)
+ src/Control/Comonad/Store/Class.hs view
@@ -0,0 +1,78 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE UndecidableInstances #-}+-----------------------------------------------------------------------------+-- |+-- Module      :  Control.Comonad.Store.Class+-- Copyright   :  (C) 2008-2012 Edward Kmett+-- License     :  BSD-style (see the file LICENSE)+--+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>+-- Stability   :  experimental+-- Portability :  non-portable (fundeps, MPTCs)+----------------------------------------------------------------------------+module Control.Comonad.Store.Class+  ( ComonadStore(..)+  , lowerPos+  , lowerPeek+  ) where++import Control.Comonad+import Control.Comonad.Trans.Class+import Control.Comonad.Trans.Env+import qualified Control.Comonad.Trans.Store as Store+import Control.Comonad.Trans.Traced+import Control.Comonad.Trans.Identity+import Data.Semigroup++class Comonad w => ComonadStore s w | w -> s where+  pos :: w a -> s+  peek :: s -> w a -> a++  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++  experiment :: Functor f => (s -> f s) -> w a -> f a+  experiment f w = fmap (`peek` w) (f (pos w))++instance Comonad w => ComonadStore s (Store.StoreT s w) where+  pos = Store.pos+  peek = Store.peek+  peeks = Store.peeks+  seek = Store.seek+  seeks = Store.seeks+  experiment = Store.experiment++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 #-}++lowerExperiment :: (ComonadTrans t, ComonadStore s w, Functor f) => (s -> f s) -> t w a -> f a+lowerExperiment f = experiment f . lower+{-# INLINE lowerExperiment #-}++instance ComonadStore s w => ComonadStore s (IdentityT w) where+  pos = lowerPos+  peek = lowerPeek+  experiment = lowerExperiment++instance ComonadStore s w => ComonadStore s (EnvT e w) where+  pos = lowerPos+  peek = lowerPeek+  experiment = lowerExperiment++instance (ComonadStore s w, Monoid m) => ComonadStore s (TracedT m w) where+  pos = lowerPos+  peek = lowerPeek+  experiment = lowerExperiment
+ src/Control/Comonad/Traced.hs view
@@ -0,0 +1,29 @@+-----------------------------------------------------------------------------+-- |+-- Module      :  Control.Comonad.Traced+-- Copyright   :  (C) 2008-2011 Edward Kmett+-- License     :  BSD-style (see the file LICENSE)+--+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>+-- Stability   :  experimental+-- Portability :  non-portable (fundeps, MPTCs)+----------------------------------------------------------------------------+module Control.Comonad.Traced (+  -- * ComonadTraced class+    ComonadTraced(..)+  , traces+  -- * The Traced comonad+  , Traced+  , traced+  , runTraced+  -- * The TracedT comonad transformer+  , TracedT(..)+  -- * Re-exported modules+  , module Control.Comonad+  , module Control.Comonad.Trans.Class+  ) where++import Control.Comonad+import Control.Comonad.Traced.Class (ComonadTraced(..), traces)+import Control.Comonad.Trans.Class+import Control.Comonad.Trans.Traced (Traced, traced, runTraced, TracedT(..), runTracedT)
+ src/Control/Comonad/Traced/Class.hs view
@@ -0,0 +1,51 @@+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE UndecidableInstances #-}+-----------------------------------------------------------------------------+-- |+-- Module      :  Control.Comonad.Traced.Class+-- Copyright   :  (C) 2008-2012 Edward Kmett+-- License     :  BSD-style (see the file LICENSE)+--+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>+-- Stability   :  experimental+-- Portability :  non-portable (fundeps, MPTCs)+----------------------------------------------------------------------------+module Control.Comonad.Traced.Class+  ( ComonadTraced(..)+  , traces+  ) where++import Control.Comonad+import Control.Comonad.Trans.Class+import Control.Comonad.Trans.Env+import Control.Comonad.Trans.Store+import qualified Control.Comonad.Trans.Traced as Traced+import Control.Comonad.Trans.Identity+import Data.Semigroup++class Comonad w => ComonadTraced m w | w -> m where+  trace :: m -> w a -> a++traces :: ComonadTraced m w => (a -> m) -> w a -> a+traces f wa = trace (f (extract wa)) wa+{-# INLINE traces #-}++instance (Comonad w, Monoid m) => ComonadTraced m (Traced.TracedT m w) where+  trace = Traced.trace++lowerTrace :: (ComonadTrans t, ComonadTraced m w) => m -> t w a -> a+lowerTrace m = trace m . lower+{-# INLINE lowerTrace #-}++-- All of these require UndecidableInstances because they do not satisfy the coverage condition++instance ComonadTraced m w => ComonadTraced m (IdentityT w) where+  trace = lowerTrace++instance ComonadTraced m w => ComonadTraced m (EnvT e w) where+  trace = lowerTrace++instance ComonadTraced m w => ComonadTraced m (StoreT s w) where+  trace = lowerTrace