packages feed

reader 0.0.7 → 0.0.8

raw patch · 5 files changed

+288/−5 lines, 5 files

Files

changelog.md view
@@ -1,3 +1,7 @@+0.0.8++* Put specialisations back+ 0.0.7  * More generalising
reader.cabal view
@@ -1,5 +1,5 @@ name:                 reader-version:              0.0.7+version:              0.0.8 synopsis:             A reader data type with all the bits description:          A reader data type with all the bits and type constructor rearrangements license:              BSD3
src/Data/Reader/Reader1.hs view
@@ -9,15 +9,26 @@ module Data.Reader.Reader1(   Reader1T(..) , Reader1+, Reader1Lens+, reader1+, reader1Lens+, reader1'+, star1+, kleisli1+, liftReader1+, pureReader1+, homReader1 ) where  import Control.Applicative     ( Applicative((<*>), pure), Alternative((<|>), empty) )+import Control.Arrow ( Kleisli ) import Control.Category ( Category(..) ) import Control.Lens-    ( view, iso, over, _Wrapped, Rewrapped, Wrapped(..) )+    ( LensLike, view, iso, over, _Wrapped, Iso, Rewrapped, Wrapped(..) ) import Control.Monad     ( Monad(return, (>>=)), MonadPlus(..) )+import qualified Control.Monad.Reader as Reader( ReaderT ) import Control.Monad.Reader.Class ( MonadReader ) import qualified Control.Monad.Reader.Class as Reader ( MonadReader(..) ) import Control.Monad.State.Class ( MonadState(..) )@@ -38,6 +49,16 @@ import Data.Functor.Identity ( Identity(..) ) import Data.Functor.Plus ( Plus(..) ) import Data.Monoid(Monoid(mempty))+import Data.Profunctor ( Star )+import Data.Reader.Reader+    ( pureReader,+      homReader,+      reader,+      readerLens,+      star,+      kleisli,+      reader',+      liftReader ) import Data.Semigroup ( Semigroup((<>)) )  newtype Reader1T a f b =@@ -54,6 +75,78 @@  type Reader1 a b =   Reader1T a Identity b++reader1 ::+  Iso+    (Reader1 a b)+    (Reader1 a' b')+    (a -> b)+    (a' -> b')+reader1 =+  reader++type Reader1Lens f s t a b =+  Reader1T a f b+  -> Reader1T s f t++reader1Lens ::+  Iso+    (LensLike f s t a b)+    (LensLike f' s' t' a' b')+    (Reader1Lens f s t a b)+    (Reader1Lens f' s' t' a' b')+reader1Lens =+  readerLens++reader1' ::+  Iso+    (Reader.ReaderT a f b)+    (Reader.ReaderT a' f' b')+    (Reader1T a f b)+    (Reader1T a' f' b')+reader1' =+  reader'++star1 ::+  Iso+    (Star f a b)+    (Star f' a' b')+    (Reader1T a f b)+    (Reader1T a' f' b')+star1 =+  star++kleisli1 ::+  Iso+    (Kleisli f a b)+    (Kleisli f' a' b')+    (Reader1T a f b)+    (Reader1T a' f' b')+kleisli1 =+  kleisli++liftReader1 ::+  Iso+    (Reader1T a f b)+    (Reader1T a' f' b')+    (Reader1 a (f b))+    (Reader1 a' (f' b'))+liftReader1 =+  liftReader++pureReader1 ::+  Applicative f =>+  Reader1 a b+  -> Reader1T a f b+pureReader1 =+  pureReader++homReader1 ::+  (forall x. f x -> g x)+  -> Reader1T a f b+  -> Reader1T a g b+homReader1 =+  homReader  instance Functor f => Functor (Reader1T a f) where   fmap f (Reader1T g) =
src/Data/Reader/Reader2.hs view
@@ -10,6 +10,15 @@ module Data.Reader.Reader2(   Reader2T(..) , Reader2+, Reader2Lens+, reader2+, reader2Lens+, reader2'+, star2+, kleisli2+, liftReader2+, pureReader2+, homReader2 ) where  import Control.Applicative@@ -21,12 +30,14 @@       (>>>),       ArrowApply(..),       ArrowChoice(..),-      ArrowLoop(..) )+      ArrowLoop(..),+      Kleisli ) import Control.Category ( Category(..) ) import Control.Lens-    ( view, iso, over, _Wrapped, Rewrapped, Wrapped(..) )+    ( LensLike, view, iso, over, _Wrapped, Iso, Rewrapped, Wrapped(..) ) import Control.Monad     ( Monad(return, (>>=)), sequence, MonadPlus(..), (>=>) )+import qualified Control.Monad.Reader as Reader( ReaderT ) import Control.Monad.Reader.Class ( MonadReader ) import qualified Control.Monad.Reader.Class as Reader ( MonadReader(..) ) import Control.Monad.State.Class ( MonadState(..) )@@ -50,12 +61,22 @@ import Data.Profunctor     ( Choice(..),       Profunctor(dimap),+      Star,       Closed(..),       Costrong(unfirst),       Strong(..),       Mapping(..),       Cochoice(unright) ) import Data.Profunctor.Traversing ( Traversing(..) )+import Data.Reader.Reader+    ( pureReader,+      homReader,+      reader,+      readerLens,+      star,+      kleisli,+      reader',+      liftReader ) import Data.Semigroup ( Semigroup((<>)) ) import Data.Semigroupoid ( Semigroupoid(..) ) import Data.Traversable ( Traversable(traverse) )@@ -75,6 +96,78 @@  type Reader2 a b =   Reader2T Identity a b++reader2 ::+  Iso+    (Reader2 a b)+    (Reader2 a' b')+    (a -> b)+    (a' -> b')+reader2 =+  reader++reader2' ::+  Iso+    (Reader.ReaderT a f b)+    (Reader.ReaderT a' f' b')+    (Reader2T f a b)+    (Reader2T f' a' b')+reader2' =+  reader'++type Reader2Lens f s t a b =+  Reader2T f a b+  -> Reader2T f s t++reader2Lens ::+  Iso+    (LensLike f s t a b)+    (LensLike f' s' t' a' b')+    (Reader2Lens f s t a b)+    (Reader2Lens f' s' t' a' b')+reader2Lens =+  readerLens++star2 ::+  Iso+    (Star f a b)+    (Star f' a' b')+    (Reader2T f a b)+    (Reader2T f' a' b')+star2 =+  star++kleisli2 ::+  Iso+    (Kleisli f a b)+    (Kleisli f' a' b')+    (Reader2T f a b)+    (Reader2T f' a' b')+kleisli2 =+  kleisli++liftReader2 ::+  Iso+    (Reader2T f a b)+    (Reader2T f' a' b')+    (Reader2 a (f b))+    (Reader2 a' (f' b'))+liftReader2 =+  liftReader++pureReader2 ::+  Applicative f =>+  Reader2 a b+  -> Reader2T f a b+pureReader2 =+  pureReader++homReader2 ::+  (forall x. f x -> g x)+  -> Reader2T f a b+  -> Reader2T g a b+homReader2 =+  homReader  instance Functor f => Functor (Reader2T f a) where   fmap f (Reader2T g) =
src/Data/Reader/Reader3.hs view
@@ -9,20 +9,41 @@ module Data.Reader.Reader3(   Reader3T(..) , Reader3+, Reader3Lens+, reader3+, reader3Lens+, reader3'+, star3+, kleisli3+, liftReader3+, pureReader3+, homReader3 ) where  import Control.Applicative     ( Applicative(pure), liftA2 )+import Control.Arrow ( Kleisli ) import Control.Category ( Category(..) ) import Control.Lens-    ( iso, over, _Wrapped, Rewrapped, Wrapped(..) )+    ( LensLike, iso, over, _Wrapped, Iso, Rewrapped, Wrapped(..) )+import qualified Control.Monad.Reader as Reader( ReaderT ) import Data.Either ( either ) import Data.Functor.Apply ( Apply(liftF2) ) import Data.Functor.Contravariant ( Contravariant(contramap) ) import Data.Functor.Contravariant.Divisible     ( Decidable(..), Divisible(..) ) import Data.Functor.Identity ( Identity(..) )+import Data.Profunctor ( Star ) import Data.Monoid(Monoid(mempty, mappend))+import Data.Reader.Reader+    ( pureReader,+      homReader,+      reader,+      readerLens,+      star,+      kleisli,+      reader',+      liftReader ) import Data.Semigroup ( Semigroup((<>)) ) import Data.Void ( absurd ) @@ -40,6 +61,78 @@  type Reader3 a b =   Reader3T Identity b a++reader3 ::+  Iso+    (Reader3 a b)+    (Reader3 a' b')+    (a -> b)+    (a' -> b')+reader3 =+  reader++reader3' ::+  Iso+    (Reader.ReaderT a f b)+    (Reader.ReaderT a' f' b')+    (Reader3T f b a)+    (Reader3T f' b' a')+reader3' =+  reader'++type Reader3Lens f s t a b =+  Reader3T f b a+  -> Reader3T f t s++reader3Lens ::+  Iso+    (LensLike f s t a b)+    (LensLike f' s' t' a' b')+    (Reader3Lens f s t a b)+    (Reader3Lens f' s' t' a' b')+reader3Lens =+  readerLens++star3 ::+  Iso+    (Star f a b)+    (Star f' a' b')+    (Reader3T f b a)+    (Reader3T f' b' a')+star3 =+  star++kleisli3 ::+  Iso+    (Kleisli f a b)+    (Kleisli f' a' b')+    (Reader3T f b a)+    (Reader3T f' b' a')+kleisli3 =+  kleisli++liftReader3 ::+  Iso+    (Reader3T f b a)+    (Reader3T f' b' a')+    (Reader3 a (f b))+    (Reader3 a' (f' b'))+liftReader3 =+  liftReader++pureReader3 ::+  Applicative f =>+  Reader3 a b+  -> Reader3T f b a+pureReader3 =+  pureReader++homReader3 ::+  (forall x. f x -> g x)+  -> Reader3T f b a+  -> Reader3T g b a+homReader3 =+  homReader  instance Contravariant (Reader3T f b) where   contramap f =