reader 0.0.6 → 0.0.7
raw patch · 8 files changed
+54/−384 lines, 8 files
Files
- changelog.md +4/−0
- reader.cabal +1/−2
- src/Data/Reader.hs +0/−1
- src/Data/Reader/Reader.hs +45/−17
- src/Data/Reader/Reader1.hs +1/−95
- src/Data/Reader/Reader2.hs +2/−96
- src/Data/Reader/Reader3.hs +1/−95
- src/Data/Reader/Readers.hs +0/−78
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)