Safe Haskell | None |
---|---|
Language | Haskell2010 |
Parameterized.Control.Monad.Trans.Reader
Synopsis
- newtype OverlappingWhichReader (m :: Type -> Type) r a = OverlappingWhichReader {
- runOverlappingWhichReader :: ReaderT r m a
- newtype DistinctWhichReader (m :: Type -> Type) r a = DistinctWhichReader {
- runDistinctWhichReader :: ReaderT r m a
- newtype ManyReader (m :: Type -> Type) r a = ManyReader {
- runManyReader :: ReaderT r m a
Documentation
newtype OverlappingWhichReader (m :: Type -> Type) r a Source #
Given a Reader that accepts Which a
, and another Reader that accepts Which b
make a reader that accepts Which (AppendUnique a b)
and runs both readers if possible,
where the types in Which a
and Which b
may overlap,
but with the compile time constraint that all the types in (AppendUnique a b) are distinct.
Constructors
OverlappingWhichReader | |
Fields
|
Instances
newtype DistinctWhichReader (m :: Type -> Type) r a Source #
Given a Reader that accepts Which a
, and another Reader that accepts Which b
make a reader that accepts Which (Append a b)
and only run one of the readers for the correct Which type,
with a compile-time contraint that the types in Which a
are distinct from the type in Which b
The advantage of DistinctWhichReader
over OverlappingWhichReader
is that pappend
doesn't
require the inner monad m
to be an Alternative
.
NB. PEmpty
still requires Alternative
but you don't need to be an instance of PEmpty
(analogous to Semigroup)
Constructors
DistinctWhichReader | |
Fields
|
Instances
Alternative m => PEmpty (DistinctWhichReader m :: Type -> Type -> Type) (Which ('[] :: [Type])) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader | |||||
Applicative m => PPointed (DistinctWhichReader m :: Type -> Type -> Type) (Which ('[] :: [Type])) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader | |||||
(Reinterpret b c, Complement c b ~ a, Complement c a ~ b, c ~ Append a b) => PAlternative (DistinctWhichReader m :: Type -> Type -> Type) (Which a :: Type) (Which b :: Type) (Which c :: Type) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods pappend :: PUnary (DistinctWhichReader m) (Which a) a0 -> PUnary (DistinctWhichReader m) (Which b) a0 -> PUnary (DistinctWhichReader m) (Which c) a0 Source # | |||||
MonadIO m => MonadIO (DistinctWhichReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods liftIO :: IO a -> DistinctWhichReader m r a # | |||||
MonadZip m => MonadZip (DistinctWhichReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods mzip :: DistinctWhichReader m r a -> DistinctWhichReader m r b -> DistinctWhichReader m r (a, b) # mzipWith :: (a -> b -> c) -> DistinctWhichReader m r a -> DistinctWhichReader m r b -> DistinctWhichReader m r c # munzip :: DistinctWhichReader m r (a, b) -> (DistinctWhichReader m r a, DistinctWhichReader m r b) # | |||||
Alternative m => Alternative (DistinctWhichReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods empty :: DistinctWhichReader m r a # (<|>) :: DistinctWhichReader m r a -> DistinctWhichReader m r a -> DistinctWhichReader m r a # some :: DistinctWhichReader m r a -> DistinctWhichReader m r [a] # many :: DistinctWhichReader m r a -> DistinctWhichReader m r [a] # | |||||
Applicative m => Applicative (DistinctWhichReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods pure :: a -> DistinctWhichReader m r a # (<*>) :: DistinctWhichReader m r (a -> b) -> DistinctWhichReader m r a -> DistinctWhichReader m r b # liftA2 :: (a -> b -> c) -> DistinctWhichReader m r a -> DistinctWhichReader m r b -> DistinctWhichReader m r c # (*>) :: DistinctWhichReader m r a -> DistinctWhichReader m r b -> DistinctWhichReader m r b # (<*) :: DistinctWhichReader m r a -> DistinctWhichReader m r b -> DistinctWhichReader m r a # | |||||
Functor m => Functor (DistinctWhichReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods fmap :: (a -> b) -> DistinctWhichReader m r a -> DistinctWhichReader m r b # (<$) :: a -> DistinctWhichReader m r b -> DistinctWhichReader m r a # | |||||
Monad m => Monad (DistinctWhichReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods (>>=) :: DistinctWhichReader m r a -> (a -> DistinctWhichReader m r b) -> DistinctWhichReader m r b # (>>) :: DistinctWhichReader m r a -> DistinctWhichReader m r b -> DistinctWhichReader m r b # return :: a -> DistinctWhichReader m r a # | |||||
MonadPlus m => MonadPlus (DistinctWhichReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods mzero :: DistinctWhichReader m r a # mplus :: DistinctWhichReader m r a -> DistinctWhichReader m r a -> DistinctWhichReader m r a # | |||||
MonadFail m => MonadFail (DistinctWhichReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods fail :: String -> DistinctWhichReader m r a # | |||||
MonadFix m => MonadFix (DistinctWhichReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods mfix :: (a -> DistinctWhichReader m r a) -> DistinctWhichReader m r a # | |||||
Generic (DistinctWhichReader m r a) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Associated Types
Methods from :: DistinctWhichReader m r a -> Rep (DistinctWhichReader m r a) x # to :: Rep (DistinctWhichReader m r a) x -> DistinctWhichReader m r a # | |||||
type PUnary (DistinctWhichReader m :: Type -> Type -> Type) (r :: Type) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader | |||||
type Rep (DistinctWhichReader m r a) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader type Rep (DistinctWhichReader m r a) = D1 ('MetaData "DistinctWhichReader" "Parameterized.Control.Monad.Trans.Reader" "parameterized-0.5.0.0-4cLjzvLNqgFEID3wSIvExK" 'True) (C1 ('MetaCons "DistinctWhichReader" 'PrefixI 'True) (S1 ('MetaSel ('Just "runDistinctWhichReader") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ReaderT r m a)))) |
newtype ManyReader (m :: Type -> Type) r a Source #
Given a Reader that accepts Many a
, and another Reader that accepts Many b
make a reader that accepts Many (AppendUnique a b)
with the compile time constraint that all the types in (AppendUnique a b) are distinct.
Constructors
ManyReader | |
Fields
|
Instances
Alternative m => PEmpty (ManyReader m :: Type -> Type -> Type) (Many ('[] :: [Type])) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader | |||||
Applicative m => PPointed (ManyReader m :: Type -> Type -> Type) (Many ('[] :: [Type])) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader | |||||
(Alternative m, Select a c, Select b c, c ~ AppendUnique a b) => PAlternative (ManyReader m :: Type -> Type -> Type) (Many a :: Type) (Many b :: Type) (Many c :: Type) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods pappend :: PUnary (ManyReader m) (Many a) a0 -> PUnary (ManyReader m) (Many b) a0 -> PUnary (ManyReader m) (Many c) a0 Source # | |||||
(Functor (ManyReader m (Many c)), Applicative m, Select a c, Select b c, c ~ AppendUnique a b) => PApplicative (ManyReader m :: Type -> Type -> Type) (Many a :: Type) (Many b :: Type) (Many c :: Type) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods papply :: PUnary (ManyReader m) (Many a) (a0 -> b0) -> PUnary (ManyReader m) (Many b) a0 -> PUnary (ManyReader m) (Many c) b0 Source # | |||||
(Functor (ManyReader m (Many c)), Monad m, Select a c, Select b c, c ~ AppendUnique a b) => PMonad (ManyReader m :: Type -> Type -> Type) (Many a :: Type) (Many b :: Type) (Many c :: Type) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods pbind :: PUnary (ManyReader m) (Many a) a0 -> (a0 -> PUnary (ManyReader m) (Many b) b0) -> PUnary (ManyReader m) (Many c) b0 Source # | |||||
MonadIO m => MonadIO (ManyReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods liftIO :: IO a -> ManyReader m r a # | |||||
MonadZip m => MonadZip (ManyReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods mzip :: ManyReader m r a -> ManyReader m r b -> ManyReader m r (a, b) # mzipWith :: (a -> b -> c) -> ManyReader m r a -> ManyReader m r b -> ManyReader m r c # munzip :: ManyReader m r (a, b) -> (ManyReader m r a, ManyReader m r b) # | |||||
Alternative m => Alternative (ManyReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods empty :: ManyReader m r a # (<|>) :: ManyReader m r a -> ManyReader m r a -> ManyReader m r a # some :: ManyReader m r a -> ManyReader m r [a] # many :: ManyReader m r a -> ManyReader m r [a] # | |||||
Applicative m => Applicative (ManyReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods pure :: a -> ManyReader m r a # (<*>) :: ManyReader m r (a -> b) -> ManyReader m r a -> ManyReader m r b # liftA2 :: (a -> b -> c) -> ManyReader m r a -> ManyReader m r b -> ManyReader m r c # (*>) :: ManyReader m r a -> ManyReader m r b -> ManyReader m r b # (<*) :: ManyReader m r a -> ManyReader m r b -> ManyReader m r a # | |||||
Functor m => Functor (ManyReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods fmap :: (a -> b) -> ManyReader m r a -> ManyReader m r b # (<$) :: a -> ManyReader m r b -> ManyReader m r a # | |||||
Monad m => Monad (ManyReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods (>>=) :: ManyReader m r a -> (a -> ManyReader m r b) -> ManyReader m r b # (>>) :: ManyReader m r a -> ManyReader m r b -> ManyReader m r b # return :: a -> ManyReader m r a # | |||||
MonadPlus m => MonadPlus (ManyReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods mzero :: ManyReader m r a # mplus :: ManyReader m r a -> ManyReader m r a -> ManyReader m r a # | |||||
MonadFail m => MonadFail (ManyReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods fail :: String -> ManyReader m r a # | |||||
MonadFix m => MonadFix (ManyReader m r) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Methods mfix :: (a -> ManyReader m r a) -> ManyReader m r a # | |||||
Generic (ManyReader m r a) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader Associated Types
Methods from :: ManyReader m r a -> Rep (ManyReader m r a) x # to :: Rep (ManyReader m r a) x -> ManyReader m r a # | |||||
type PUnary (ManyReader m :: Type -> Type -> Type) (r :: Type) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader | |||||
type Rep (ManyReader m r a) Source # | |||||
Defined in Parameterized.Control.Monad.Trans.Reader type Rep (ManyReader m r a) = D1 ('MetaData "ManyReader" "Parameterized.Control.Monad.Trans.Reader" "parameterized-0.5.0.0-4cLjzvLNqgFEID3wSIvExK" 'True) (C1 ('MetaCons "ManyReader" 'PrefixI 'True) (S1 ('MetaSel ('Just "runManyReader") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ReaderT r m a)))) |