packages feed

reader 0.0.6 → 0.0.7

raw patch · 8 files changed

+54/−384 lines, 8 files

Files

changelog.md view
@@ -1,3 +1,7 @@+0.0.7++* More generalising+ 0.0.6  * More generalising
reader.cabal view
@@ -1,5 +1,5 @@ name:                 reader-version:              0.0.6+version:              0.0.7 synopsis:             A reader data type with all the bits description:          A reader data type with all the bits and type constructor rearrangements license:              BSD3@@ -25,7 +25,6 @@                       Data.Reader.Reader1                       Data.Reader.Reader2                       Data.Reader.Reader3-                      Data.Reader.Readers    build-depends:        base >= 4.8 && < 6                       , contravariant >= 1 && < 2
src/Data/Reader.hs view
@@ -7,4 +7,3 @@ import Data.Reader.Reader1 as R import Data.Reader.Reader2 as R import Data.Reader.Reader3 as R-import Data.Reader.Readers as R
src/Data/Reader/Reader.hs view
@@ -23,8 +23,12 @@ -- -- Iso (Reader a b) (Reader a' b') (a -> b) (a' -> b') reader ::-  (Rewrapped t t, Rewrapped s1 s1, Rewrapped s2 s2, Rewrapped c c, Unwrapped t ~ (a1 -> c), Unwrapped s1 ~ (a2 -> s2)) =>-  Iso s1 t (a2 -> Unwrapped s2) (a1 -> Unwrapped c)+  (Rewrapped s s, Rewrapped t t, Rewrapped s' s', Rewrapped t' t', Unwrapped t ~ (a -> t'), Unwrapped s ~ (a' -> s')) =>+  Iso+    s+    t+    (a' -> Unwrapped s')+    (a -> Unwrapped t') reader =   iso     (\r -> view _Wrapped . view _Wrapped r)@@ -32,14 +36,14 @@  -- | ----- 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')+-- Iso (LensLike f s t a b) (LensLike f' s' t' a' b') (ReaderT a f b -> ReaderT s f t) (ReaderT a' f b' -> ReaderT s' f t') readerLens ::-  (Rewrapped t1 t1, Rewrapped s1 s1, Rewrapped s2 s2, Rewrapped t2 t2) =>+  (Rewrapped s s, Rewrapped t t, Rewrapped s' s', Rewrapped t' t') =>   Iso-    (Unwrapped s1 -> Unwrapped t1)-    (Unwrapped t2 -> Unwrapped s2)-    (s1 -> t1)-    (t2 -> s2)+    (Unwrapped s -> Unwrapped t)+    (Unwrapped t' -> Unwrapped s')+    (s -> t)+    (t' -> s') readerLens =   iso     (\k f -> review _Wrapped (k (view _Wrapped f)))@@ -49,8 +53,8 @@ -- -- Applicative f => Reader a b -> ReaderT a f b pureReader ::-  (Applicative f, Rewrapped s1 t, Rewrapped t s1, Rewrapped s2 s2, Unwrapped t ~ (a -> f (Unwrapped s2)), Unwrapped s1 ~ (a -> s2)) =>-  s1+  (Applicative f, Rewrapped s t, Rewrapped t s, Rewrapped s' s', Unwrapped s ~ (a -> s'), Unwrapped t ~ (a -> f (Unwrapped s'))) =>+  s   -> t pureReader =   over _Wrapped (\f -> pure . view _Wrapped . f)@@ -59,7 +63,7 @@ -- -- (forall x. f x -> g x) -> ReaderT a f b -> ReaderT a g b homReader ::-  (Rewrapped s t, Rewrapped t s, Category cat, Unwrapped t ~ cat a c, Unwrapped s ~ cat a b) =>+  (Rewrapped s t, Rewrapped t s, Category cat, Unwrapped s ~ cat a b, Unwrapped t ~ cat a c) =>   cat b c   -> s   -> t@@ -70,8 +74,12 @@ -- -- Iso (Star f a b) (Star f' a' b') (ReaderT a f b) (ReaderT a' f' b') star ::-  (Rewrapped a a, Rewrapped s s, Unwrapped a ~ (d1 -> f2 c1), Unwrapped s ~ (d2 -> f3 c2)) =>-  Iso (Star f2 d1 c1) (Star f3 d2 c2) a s+  (Rewrapped a a, Rewrapped b b, Unwrapped a ~ (x -> f y), Unwrapped b ~ (x' -> f' y')) =>+  Iso+    (Star f x y)+    (Star f' x' y')+    a+    b star =   reader' @@ -79,14 +87,34 @@ -- -- Iso (Kleisli f a b) (Kleisli f' a' b') (ReaderT a f b) (ReaderT a' f' b') kleisli ::-  (Rewrapped a1 a1, Rewrapped s s, Unwrapped a1 ~ (a2 -> m1 b1), Unwrapped s ~ (a3 -> m2 b2)) =>-  Iso (Kleisli m1 a2 b1) (Kleisli m2 a3 b2) a1 s+  (Rewrapped a a, Rewrapped b b, Unwrapped a ~ (x -> m y), Unwrapped b ~ (x' -> m' y')) =>+  Iso+    (Kleisli m x y)+    (Kleisli m' x' y')+    a+    b kleisli =   reader' -reader' ::-  (Rewrapped s s, Rewrapped t t, Rewrapped a a, Rewrapped b b, Unwrapped b ~ Unwrapped t, Unwrapped a ~ Unwrapped s) =>+-- |+--+-- Iso (ReaderT a f b) (ReaderT a' f' b') (Reader a (f b)) (Reader a' (f' b'))+liftReader ::+  (Rewrapped s s, Rewrapped t t, Rewrapped a a, Rewrapped b b, Rewrapped s' s', Rewrapped t' t',+  Unwrapped s ~ (a'' -> Unwrapped s'), Unwrapped t ~ (a' -> Unwrapped t'), Unwrapped a ~ (a'' -> s'), Unwrapped b ~ (a' -> t')) =>   Iso s t a b+liftReader =+  iso+    (review reader . view _Wrapped)+    (review _Wrapped . view reader)++reader' ::+  (Rewrapped s s, Rewrapped t t, Rewrapped a a, Rewrapped b b, Unwrapped a ~ Unwrapped s, Unwrapped b ~ Unwrapped t) =>+  Iso+    s+    t+    a+    b reader' =   iso     (review _Wrapped . view _Wrapped)
src/Data/Reader/Reader1.hs view
@@ -9,26 +9,15 @@ 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-    ( LensLike, view, iso, review, over, _Wrapped, Iso, Rewrapped, Wrapped(..) )+    ( view, iso, over, _Wrapped, 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(..) )@@ -49,15 +38,6 @@ 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' ) import Data.Semigroup ( Semigroup((<>)) )  newtype Reader1T a f b =@@ -74,80 +54,6 @@  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 =-  iso-    (review reader1 . view _Wrapped)-    (review _Wrapped . view reader1)--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,15 +10,6 @@ module Data.Reader.Reader2(   Reader2T(..) , Reader2-, Reader2Lens-, reader2-, reader2Lens-, reader2'-, star2-, kleisli2-, liftReader2-, pureReader2-, homReader2 ) where  import Control.Applicative@@ -30,14 +21,12 @@       (>>>),       ArrowApply(..),       ArrowChoice(..),-      ArrowLoop(..),-      Kleisli )+      ArrowLoop(..) ) import Control.Category ( Category(..) ) import Control.Lens-    ( LensLike, view, iso, review, over, _Wrapped, Iso, Rewrapped, Wrapped(..) )+    ( view, iso, over, _Wrapped, 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(..) )@@ -61,21 +50,12 @@ 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' ) import Data.Semigroup ( Semigroup((<>)) ) import Data.Semigroupoid ( Semigroupoid(..) ) import Data.Traversable ( Traversable(traverse) )@@ -95,80 +75,6 @@  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 =-  iso-    (review reader2 . view _Wrapped)-    (review _Wrapped . view reader2)--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,40 +9,20 @@ 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-    ( LensLike, view, iso, review, over, _Wrapped, Iso, Rewrapped, Wrapped(..) )-import qualified Control.Monad.Reader as Reader( ReaderT )+    ( iso, over, _Wrapped, Rewrapped, Wrapped(..) ) 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' ) import Data.Semigroup ( Semigroup((<>)) ) import Data.Void ( absurd ) @@ -60,80 +40,6 @@  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 =-  iso-    (review reader3 . view _Wrapped)-    (review _Wrapped . view reader3)--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 =
− src/Data/Reader/Readers.hs
@@ -1,78 +0,0 @@-{-# OPTIONS_GHC -Wall #-}-{-# LANGUAGE NoImplicitPrelude #-}--module Data.Reader.Readers(-  _Reader1Reader2-, _Reader2Reader1-) where--import Control.Lens ( iso, Iso )-import Data.Reader.Reader1 ( Reader1T(..) )-import Data.Reader.Reader2 ( Reader2T(..) )-import Data.Reader.Reader3 ( Reader3T(..) )--_Reader1Reader2 ::-  Iso-    (Reader2T f a b)-    (Reader2T f' a' b')-    (Reader1T a f b)-    (Reader1T a' f' b')-_Reader1Reader2 =-  iso-    (\(Reader2T f) -> Reader1T f)-    (\(Reader1T f) -> Reader2T f)--_Reader1Reader3 ::-  Iso-    (Reader3T f b a)-    (Reader3T f' b' a')-    (Reader1T a f b)-    (Reader1T a' f' b')-_Reader1Reader3 =-  iso-    (\(Reader3T f) -> Reader1T f)-    (\(Reader1T f) -> Reader3T f)--_Reader2Reader1 ::-  Iso-    (Reader1T a f b)-    (Reader1T a' f' b')-    (Reader2T f a b)-    (Reader2T f' a' b')-_Reader2Reader1 =-  iso-    (\(Reader1T f) -> Reader2T f)-    (\(Reader2T f) -> Reader1T f)--_Reader2Reader3 ::-  Iso-    (Reader3T f b a)-    (Reader3T f' b' a')-    (Reader2T f a b)-    (Reader2T f' a' b')-_Reader2Reader3 =-  iso-    (\(Reader3T f) -> Reader2T f)-    (\(Reader2T f) -> Reader3T f)--_Reader3Reader1 ::-  Iso-    (Reader1T a f b)-    (Reader1T a' f' b')-    (Reader3T f b a)-    (Reader3T f' b' a')-_Reader3Reader1 =-  iso-    (\(Reader1T f) -> Reader3T f)-    (\(Reader3T f) -> Reader1T f)--_Reader3Reader2 ::-  Iso-    (Reader2T f a b)-    (Reader2T f' a' b')-    (Reader3T f b a)-    (Reader3T f' b' a')-_Reader3Reader2 =-  iso-    (\(Reader2T f) -> Reader3T f)-    (\(Reader3T f) -> Reader2T f)