-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Extensible records and polymorphic variants.
--
-- Parameterized/indexed monoids and monads using only a single parameter
-- type variable.
@package parameterized
@version 0.1.0.0
module Parameterized.TypeLevel
-- | Get the first type of a type level tuple This is useful for defining a
-- newtype wrapper with a single "parameterized" type, around a type with
-- many "parameterized" type variables.
-- | Get the second type of a type level tuple
-- | Get the third type of a type level tuple
-- | Get the fourth type of a type level tuple
-- | Get the fifth type of a type level tuple
-- | Get the sixth type of a type level tuple
-- | Get the seventh type of a type level tuple
-- | Get the eigth type of a type level tuple
-- | Get the nineth type of a type level tuple
-- | Get the tenth type of a type level tuple
module Parameterized.Data.Semigroup
-- | Parameterized version of (<>) in Semigroup If used in
-- conjunction with Empty, ie as a parameterized Monoid, then the
-- instance should follow the following laws: * pmempty'
-- pmappend' x = x * x pmappend' pempty' =
-- x * x pmappend' (y pmappend' z) = (x
-- pmappend' y) pmappend' z
class PSemigroup (n :: k -> Type) (t :: k) (u :: k) (v :: k) | t u -> v
pmappend :: PSemigroup n t u v => n t -> n u -> n v
(&<>) :: (PSemigroup n t u v) => n t -> n u -> n v
infixr 6 &<>
module Parameterized.Data.Monoid
-- | Parameterized version of mempty in Monoid.
class PMempty (n :: k -> Type) (id :: k)
pmempty :: PMempty n id => n id
-- | Parameterized version of Monoid.
type PMonoid n id t u v = (PMempty n id, PSemigroup n t u v)
module Parameterized.Control.Applicative
-- | Parameterized version of pure in Applicative An instance
-- of this should create a parameterized unary type where the parameter
-- is an identity in respect to papply
class PPointed (m :: k -> Type -> Type) (id :: k)
-- | lift a value.
ppure :: PPointed m id => a -> m id a
-- | Parameterized version of ap in Applicative NB.
-- PPointed cannot be made a superclass because type variable
-- id is not in scope.
class (Functor (m t), Functor (m u), Functor (m v)) => PApplicative (m :: k -> Type -> Type) (t :: k) (u :: k) (v :: k) | t u -> v
-- | Sequential application.
papply :: PApplicative m t u v => m t (a -> b) -> m u a -> m v b
-- | Sequential application.
(&<*>) :: (PApplicative m t u v) => m t (a -> b) -> m u a -> m v b
infixl 4 &<*>
-- | Sequence actions, discarding the value of the first argument.
(&*>) :: (PApplicative m t u v) => m t a -> m u b -> m v b
infixl 4 &*>
-- | Sequence actions, discarding the value of the second argument.
(&<*) :: (PApplicative m t u v) => m t a -> m u b -> m v a
infixl 4 &<*
-- | Lift a function to actions.
pliftA :: (Functor (m t)) => (a -> b) -> m t a -> m t b
-- | Lift a binary function to actions.
pliftA2 :: (PApplicative m t u v) => (a -> b -> c) -> m t a -> m u b -> m v c
-- | Lift a ternary function to actions.
pliftA3 :: (PApplicative m t u v, PApplicative m v w x) => (a -> b -> c -> d) -> m t a -> m u b -> m w c -> m x d
-- | Parameterized version of empty in Alternative. An instance of
-- this should create a parameterized unary type where the parameter is
-- an identity in respect to pappend
class PEmpty (m :: k -> Type -> Type) (id :: k)
-- | The identity of &<|>
pempty :: PEmpty m id => m id a
-- | Parameterized version of Alternative NB. PEmpty cannot
-- be made a superclass because type variable id will be
-- ambiguous. NB. PAlternative doensn't require PApplicative as a
-- superclass, because Some things can be made instances of
-- PAlternative but not PApplicative.
class PAlternative (m :: k -> Type -> Type) (t :: k) (u :: k) (v :: k) | t u -> v
-- | An associative binary operation
pappend :: PAlternative m t u v => m t a -> m u a -> m v a
(&<|>) :: (PAlternative m t u v) => m t a -> m u a -> m v a
infixl 3 &<|>
module Parameterized.Control.Monad
-- | Parameterized version of Monad.
class PApplicative m t u v => PMonad (m :: k -> Type -> Type) (t :: k) (u :: k) (v :: k)
-- | Sequentially compose two actions, passing any value produced by the
-- first as an argument to the second.
pbind :: PMonad m t u v => m t a -> (a -> m u b) -> m v b
-- | Sequentially compose two actions, passing any value produced by the
-- first as an argument to the second.
(&>>=) :: PMonad m t u v => m t a -> (a -> m u b) -> m v b
infixl 1 &>>=
(&>>) :: PMonad m t u v => m t a -> m u b -> m v b
infixl 1 &>>
-- | Same as &>>=, but with the arguments interchanged.
(&=<<) :: PMonad m t u v => (a -> m u b) -> m t a -> m v b
infixr 1 &=<<
-- | Left-to-right Kleisli composition of monads.
(&>=>) :: (PMonad m t u v) => (a -> m t b) -> (b -> m u c) -> (a -> m v c)
infixr 1 &>=>
-- | Right-to-left Kleisli composition of monads.
-- (>=>), with the arguments flipped.
(&<=<) :: (PMonad m t u v) => (b -> m u c) -> (a -> m t b) -> (a -> m v c)
infixr 1 &<=<
module Parameterized.Control.Monad.Trans.Reader
-- | 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.
newtype OverlappingWhichReader m r a
OverlappingWhichReader :: ReaderT r m a -> OverlappingWhichReader m r a
[runOverlappingWhichReader] :: OverlappingWhichReader m r a -> ReaderT r m a
-- | 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
newtype DistinctWhichReader m r a
DistinctWhichReader :: ReaderT r m a -> DistinctWhichReader m r a
[runDistinctWhichReader] :: DistinctWhichReader m r a -> ReaderT r m a
-- | 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.
newtype ManyReader m r a
ManyReader :: ReaderT r m a -> ManyReader m r a
[runManyReader] :: ManyReader m r a -> ReaderT r m a
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Parameterized.Control.Monad.Trans.Reader.ManyReader m r)
instance Control.Monad.Fail.MonadFail m => Control.Monad.Fail.MonadFail (Parameterized.Control.Monad.Trans.Reader.ManyReader m r)
instance Control.Monad.Fix.MonadFix m => Control.Monad.Fix.MonadFix (Parameterized.Control.Monad.Trans.Reader.ManyReader m r)
instance Control.Monad.Zip.MonadZip m => Control.Monad.Zip.MonadZip (Parameterized.Control.Monad.Trans.Reader.ManyReader m r)
instance GHC.Base.MonadPlus m => GHC.Base.MonadPlus (Parameterized.Control.Monad.Trans.Reader.ManyReader m r)
instance GHC.Base.Alternative m => GHC.Base.Alternative (Parameterized.Control.Monad.Trans.Reader.ManyReader m r)
instance GHC.Base.Monad m => GHC.Base.Monad (Parameterized.Control.Monad.Trans.Reader.ManyReader m r)
instance GHC.Base.Applicative m => GHC.Base.Applicative (Parameterized.Control.Monad.Trans.Reader.ManyReader m r)
instance GHC.Base.Functor m => GHC.Base.Functor (Parameterized.Control.Monad.Trans.Reader.ManyReader m r)
instance GHC.Generics.Generic (Parameterized.Control.Monad.Trans.Reader.ManyReader m r a)
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Parameterized.Control.Monad.Trans.Reader.DistinctWhichReader m r)
instance Control.Monad.Fail.MonadFail m => Control.Monad.Fail.MonadFail (Parameterized.Control.Monad.Trans.Reader.DistinctWhichReader m r)
instance Control.Monad.Fix.MonadFix m => Control.Monad.Fix.MonadFix (Parameterized.Control.Monad.Trans.Reader.DistinctWhichReader m r)
instance Control.Monad.Zip.MonadZip m => Control.Monad.Zip.MonadZip (Parameterized.Control.Monad.Trans.Reader.DistinctWhichReader m r)
instance GHC.Base.MonadPlus m => GHC.Base.MonadPlus (Parameterized.Control.Monad.Trans.Reader.DistinctWhichReader m r)
instance GHC.Base.Alternative m => GHC.Base.Alternative (Parameterized.Control.Monad.Trans.Reader.DistinctWhichReader m r)
instance GHC.Base.Monad m => GHC.Base.Monad (Parameterized.Control.Monad.Trans.Reader.DistinctWhichReader m r)
instance GHC.Base.Applicative m => GHC.Base.Applicative (Parameterized.Control.Monad.Trans.Reader.DistinctWhichReader m r)
instance GHC.Base.Functor m => GHC.Base.Functor (Parameterized.Control.Monad.Trans.Reader.DistinctWhichReader m r)
instance GHC.Generics.Generic (Parameterized.Control.Monad.Trans.Reader.DistinctWhichReader m r a)
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Parameterized.Control.Monad.Trans.Reader.OverlappingWhichReader m r)
instance Control.Monad.Fail.MonadFail m => Control.Monad.Fail.MonadFail (Parameterized.Control.Monad.Trans.Reader.OverlappingWhichReader m r)
instance Control.Monad.Fix.MonadFix m => Control.Monad.Fix.MonadFix (Parameterized.Control.Monad.Trans.Reader.OverlappingWhichReader m r)
instance Control.Monad.Zip.MonadZip m => Control.Monad.Zip.MonadZip (Parameterized.Control.Monad.Trans.Reader.OverlappingWhichReader m r)
instance GHC.Base.MonadPlus m => GHC.Base.MonadPlus (Parameterized.Control.Monad.Trans.Reader.OverlappingWhichReader m r)
instance GHC.Base.Alternative m => GHC.Base.Alternative (Parameterized.Control.Monad.Trans.Reader.OverlappingWhichReader m r)
instance GHC.Base.Monad m => GHC.Base.Monad (Parameterized.Control.Monad.Trans.Reader.OverlappingWhichReader m r)
instance GHC.Base.Applicative m => GHC.Base.Applicative (Parameterized.Control.Monad.Trans.Reader.OverlappingWhichReader m r)
instance GHC.Base.Functor m => GHC.Base.Functor (Parameterized.Control.Monad.Trans.Reader.OverlappingWhichReader m r)
instance GHC.Generics.Generic (Parameterized.Control.Monad.Trans.Reader.OverlappingWhichReader m r a)
instance GHC.Base.Applicative m => Parameterized.Control.Applicative.PPointed (Parameterized.Control.Monad.Trans.Reader.OverlappingWhichReader m) (Data.Diverse.Which.Internal.Which '[])
instance GHC.Base.Alternative m => Parameterized.Control.Applicative.PEmpty (Parameterized.Control.Monad.Trans.Reader.OverlappingWhichReader m) (Data.Diverse.Which.Internal.Which '[])
instance (GHC.Base.Alternative m, Data.Diverse.Which.Internal.Reinterpret b c, Data.Diverse.Which.Internal.Reinterpret a c, c ~ Data.Diverse.TypeLevel.AppendUnique a b) => Parameterized.Control.Applicative.PAlternative (Parameterized.Control.Monad.Trans.Reader.OverlappingWhichReader m) (Data.Diverse.Which.Internal.Which a) (Data.Diverse.Which.Internal.Which b) (Data.Diverse.Which.Internal.Which c)
instance GHC.Base.Applicative m => Parameterized.Control.Applicative.PPointed (Parameterized.Control.Monad.Trans.Reader.DistinctWhichReader m) (Data.Diverse.Which.Internal.Which '[])
instance GHC.Base.Alternative m => Parameterized.Control.Applicative.PEmpty (Parameterized.Control.Monad.Trans.Reader.DistinctWhichReader m) (Data.Diverse.Which.Internal.Which '[])
instance (Data.Diverse.Which.Internal.Reinterpret b c, Data.Diverse.TypeLevel.Complement c b ~ a, Data.Diverse.TypeLevel.Complement c a ~ b, c ~ Data.Diverse.TypeLevel.Append a b) => Parameterized.Control.Applicative.PAlternative (Parameterized.Control.Monad.Trans.Reader.DistinctWhichReader m) (Data.Diverse.Which.Internal.Which a) (Data.Diverse.Which.Internal.Which b) (Data.Diverse.Which.Internal.Which c)
instance GHC.Base.Applicative m => Parameterized.Control.Applicative.PPointed (Parameterized.Control.Monad.Trans.Reader.ManyReader m) (Data.Diverse.Many.Internal.Many '[])
instance GHC.Base.Alternative m => Parameterized.Control.Applicative.PEmpty (Parameterized.Control.Monad.Trans.Reader.ManyReader m) (Data.Diverse.Many.Internal.Many '[])
instance (GHC.Base.Functor (Parameterized.Control.Monad.Trans.Reader.ManyReader m (Data.Diverse.Many.Internal.Many c)), GHC.Base.Applicative m, Data.Diverse.Many.Internal.Select a c, Data.Diverse.Many.Internal.Select b c, c ~ Data.Diverse.TypeLevel.AppendUnique a b) => Parameterized.Control.Applicative.PApplicative (Parameterized.Control.Monad.Trans.Reader.ManyReader m) (Data.Diverse.Many.Internal.Many a) (Data.Diverse.Many.Internal.Many b) (Data.Diverse.Many.Internal.Many c)
instance (GHC.Base.Functor (Parameterized.Control.Monad.Trans.Reader.ManyReader m (Data.Diverse.Many.Internal.Many c)), GHC.Base.Alternative m, Data.Diverse.Many.Internal.Select a c, Data.Diverse.Many.Internal.Select b c, c ~ Data.Diverse.TypeLevel.AppendUnique a b) => Parameterized.Control.Applicative.PAlternative (Parameterized.Control.Monad.Trans.Reader.ManyReader m) (Data.Diverse.Many.Internal.Many a) (Data.Diverse.Many.Internal.Many b) (Data.Diverse.Many.Internal.Many c)
instance (GHC.Base.Functor (Parameterized.Control.Monad.Trans.Reader.ManyReader m (Data.Diverse.Many.Internal.Many c)), GHC.Base.Monad m, Data.Diverse.Many.Internal.Select a c, Data.Diverse.Many.Internal.Select b c, c ~ Data.Diverse.TypeLevel.AppendUnique a b) => Parameterized.Control.Monad.PMonad (Parameterized.Control.Monad.Trans.Reader.ManyReader m) (Data.Diverse.Many.Internal.Many a) (Data.Diverse.Many.Internal.Many b) (Data.Diverse.Many.Internal.Many c)
module Parameterized.Control.Monad.Trans.State.Strict
-- | Given a ManyState that modifies Many a, and another ManyState
-- that modifes Many b make a State that accepts Many
-- (AppendUnique a b) with the compile time constraint that all the
-- types in (AppendUnique a b) are distinct.
newtype ManyState m s a
ManyState :: StateT s m a -> ManyState m s a
[runManyState] :: ManyState m s a -> StateT s m a
-- | Given a ChangingState that changes state from s to
-- t, and another ChangingState that changes state from
-- t to u make a State that changes from s to
-- u with the compile time constraint that all the types in
-- (AppendUnique a b) are distinct.
newtype ChangingState m st a
ChangingState :: (At0 st -> m (a, At1 st)) -> ChangingState m st a
[runChangingState] :: ChangingState m st a -> At0 st -> m (a, At1 st)
instance GHC.Generics.Generic (Parameterized.Control.Monad.Trans.State.Strict.ChangingState m st a)
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Parameterized.Control.Monad.Trans.State.Strict.ManyState m s)
instance Control.Monad.Fail.MonadFail m => Control.Monad.Fail.MonadFail (Parameterized.Control.Monad.Trans.State.Strict.ManyState m s)
instance Control.Monad.Fix.MonadFix m => Control.Monad.Fix.MonadFix (Parameterized.Control.Monad.Trans.State.Strict.ManyState m s)
instance GHC.Base.MonadPlus m => GHC.Base.MonadPlus (Parameterized.Control.Monad.Trans.State.Strict.ManyState m s)
instance GHC.Base.MonadPlus m => GHC.Base.Alternative (Parameterized.Control.Monad.Trans.State.Strict.ManyState m s)
instance GHC.Base.Monad m => GHC.Base.Monad (Parameterized.Control.Monad.Trans.State.Strict.ManyState m s)
instance GHC.Base.Monad m => GHC.Base.Applicative (Parameterized.Control.Monad.Trans.State.Strict.ManyState m s)
instance GHC.Base.Functor m => GHC.Base.Functor (Parameterized.Control.Monad.Trans.State.Strict.ManyState m s)
instance GHC.Generics.Generic (Parameterized.Control.Monad.Trans.State.Strict.ManyState m s a)
instance GHC.Base.Monad m => Parameterized.Control.Applicative.PPointed (Parameterized.Control.Monad.Trans.State.Strict.ManyState m) (Data.Diverse.Many.Internal.Many '[])
instance GHC.Base.Alternative m => Parameterized.Control.Applicative.PEmpty (Parameterized.Control.Monad.Trans.State.Strict.ManyState m) (Data.Diverse.Many.Internal.Many '[])
instance (GHC.Base.Monad m, Data.Diverse.Many.Internal.Select a c, Data.Diverse.Many.Internal.Select b c, Data.Diverse.Many.Internal.Amend a c, Data.Diverse.Many.Internal.Amend b c, c ~ Data.Diverse.TypeLevel.AppendUnique a b) => Parameterized.Control.Applicative.PApplicative (Parameterized.Control.Monad.Trans.State.Strict.ManyState m) (Data.Diverse.Many.Internal.Many a) (Data.Diverse.Many.Internal.Many b) (Data.Diverse.Many.Internal.Many c)
instance (GHC.Base.Monad m, GHC.Base.Alternative m, Data.Diverse.Many.Internal.Select a c, Data.Diverse.Many.Internal.Select b c, Data.Diverse.Many.Internal.Amend a c, Data.Diverse.Many.Internal.Amend b c, c ~ Data.Diverse.TypeLevel.AppendUnique a b) => Parameterized.Control.Applicative.PAlternative (Parameterized.Control.Monad.Trans.State.Strict.ManyState m) (Data.Diverse.Many.Internal.Many a) (Data.Diverse.Many.Internal.Many b) (Data.Diverse.Many.Internal.Many c)
instance (GHC.Base.Monad m, Data.Diverse.Many.Internal.Select a c, Data.Diverse.Many.Internal.Select b c, Data.Diverse.Many.Internal.Amend a c, Data.Diverse.Many.Internal.Amend b c, c ~ Data.Diverse.TypeLevel.AppendUnique a b) => Parameterized.Control.Monad.PMonad (Parameterized.Control.Monad.Trans.State.Strict.ManyState m) (Data.Diverse.Many.Internal.Many a) (Data.Diverse.Many.Internal.Many b) (Data.Diverse.Many.Internal.Many c)
instance GHC.Base.Functor m => GHC.Base.Functor (Parameterized.Control.Monad.Trans.State.Strict.ChangingState m st)
instance GHC.Base.Applicative m => Parameterized.Control.Applicative.PPointed (Parameterized.Control.Monad.Trans.State.Strict.ChangingState m) (s, s)
instance GHC.Base.Monad m => Parameterized.Control.Applicative.PApplicative (Parameterized.Control.Monad.Trans.State.Strict.ChangingState m) (s, t) (t, u) (s, u)
instance GHC.Base.Monad m => Parameterized.Control.Monad.PMonad (Parameterized.Control.Monad.Trans.State.Strict.ChangingState m) (s, t) (t, u) (s, u)