Copyright | (c) Justin Le 2019 |
---|---|
License | BSD3 |
Maintainer | justin@jle.im |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
Synopsis
- data Step f a = Step {}
- newtype Steps f a = Steps {}
- data Flagged f a = Flagged {
- flaggedFlag :: Bool
- flaggedVal :: f a
- stepUp :: (f :+: Step f) ~> Step f
- stepDown :: Step f ~> (f :+: Step f)
- stepping :: Step f <~> (f :+: Step f)
- stepsUp :: These1 f (Steps f) ~> Steps f
- stepsDown :: Steps f ~> These1 f (Steps f)
- steppings :: Steps f <~> These1 f (Steps f)
- absurd1 :: V1 a -> f a
- data Void2 a b
- absurd2 :: Void2 f a -> t f a
- data Void3 a b c
- absurd3 :: Void3 f g a -> t f g a
Fixed Points
An f a
, along with a Natural
index.
Step
f a ~ (Natural
, f a) Step f ~ ((,) Natural):.:
f -- functor composition
It is the fixed point of infinite applications of :+:
(functor sums).
Intuitively, in an infinite f :+: f :+: f :+: f ...
, you have
exactly one f
somewhere. A
has that Step
f af
, with
a Natural
giving you "where" the f
is in the long chain.
Can be useful for using with the Monoidal
instance of :+:
.
interpret
ing it requires no constraint on the
target context.
Note that this type and its instances equivalent to
.EnvT
(Sum
Natural
)
Instances
HFunctor (Step :: (k -> Type) -> k -> Type) Source # | |
HTraversable (Step :: (k -> Type) -> k -> Type) Source # | |
Defined in Data.HFunctor.HTraversable | |
HTraversable1 (Step :: (k -> Type) -> k -> Type) Source # | |
Defined in Data.HFunctor.HTraversable | |
HBind (Step :: (k -> Type) -> k -> Type) Source # | |
Inject (Step :: (k -> Type) -> k -> Type) Source # | Injects with 0. |
Interpret (Step :: (k -> Type) -> k -> Type) (f :: k -> Type) Source # | |
Functor f => Functor (Step f) Source # | |
Applicative f => Applicative (Step f) Source # | |
Foldable f => Foldable (Step f) Source # | |
Defined in Control.Applicative.Step fold :: Monoid m => Step f m -> m # foldMap :: Monoid m => (a -> m) -> Step f a -> m # foldMap' :: Monoid m => (a -> m) -> Step f a -> m # foldr :: (a -> b -> b) -> b -> Step f a -> b # foldr' :: (a -> b -> b) -> b -> Step f a -> b # foldl :: (b -> a -> b) -> b -> Step f a -> b # foldl' :: (b -> a -> b) -> b -> Step f a -> b # foldr1 :: (a -> a -> a) -> Step f a -> a # foldl1 :: (a -> a -> a) -> Step f a -> a # elem :: Eq a => a -> Step f a -> Bool # maximum :: Ord a => Step f a -> a # minimum :: Ord a => Step f a -> a # | |
Traversable f => Traversable (Step f) Source # | |
Contravariant f => Contravariant (Step f) Source # | Since: 0.3.0.0 |
Eq1 f => Eq1 (Step f) Source # | |
Ord1 f => Ord1 (Step f) Source # | |
Defined in Control.Applicative.Step | |
Read1 f => Read1 (Step f) Source # | |
Defined in Control.Applicative.Step | |
Show1 f => Show1 (Step f) Source # | |
Divisible f => Divisible (Step f) Source # | Since: 0.3.0.0 |
Decidable f => Decidable (Step f) Source # | Since: 0.3.0.0 |
Invariant f => Invariant (Step f) Source # | Since: 0.3.0.0 |
Defined in Control.Applicative.Step | |
Foldable1 f => Foldable1 (Step f) Source # | |
Apply f => Apply (Step f) Source # | Since: 0.3.0.0 |
Pointed f => Pointed (Step f) Source # | |
Defined in Control.Applicative.Step | |
Traversable1 f => Traversable1 (Step f) Source # | |
Divise f => Divise (Step f) Source # | Since: 0.3.0.0 |
Decide f => Decide (Step f) Source # | Since: 0.3.0.0 |
Conclude f => Conclude (Step f) Source # | Since: 0.3.0.0 |
Eq (f a) => Eq (Step f a) Source # | |
(Typeable a, Typeable f, Typeable k, Data (f a)) => Data (Step f a) Source # | |
Defined in Control.Applicative.Step gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Step f a -> c (Step f a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Step f a) # toConstr :: Step f a -> Constr # dataTypeOf :: Step f a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Step f a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Step f a)) # gmapT :: (forall b. Data b => b -> b) -> Step f a -> Step f a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Step f a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Step f a -> r # gmapQ :: (forall d. Data d => d -> u) -> Step f a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Step f a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Step f a -> m (Step f a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Step f a -> m (Step f a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Step f a -> m (Step f a) # | |
Ord (f a) => Ord (Step f a) Source # | |
Defined in Control.Applicative.Step | |
Read (f a) => Read (Step f a) Source # | |
Show (f a) => Show (Step f a) Source # | |
Generic (Step f a) Source # | |
type Rep (Step f a) Source # | |
Defined in Control.Applicative.Step type Rep (Step f a) = D1 ('MetaData "Step" "Control.Applicative.Step" "functor-combinators-0.3.6.0-inplace" 'False) (C1 ('MetaCons "Step" 'PrefixI 'True) (S1 ('MetaSel ('Just "stepPos") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural) :*: S1 ('MetaSel ('Just "stepVal") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f a)))) |
A non-empty map of Natural
to f a
. Basically, contains multiple
f a
s, each at a given Natural
index.
Steps f a ~Map
Natural
(f a) Steps f ~Map
Natural
:.:
f -- functor composition
It is the fixed point of applications of TheseT
.
You can think of this as an infinite sparse array of f a
s.
Intuitively, in an infinite f `TheseT` f `TheseT` f `TheseT` f ...
,
each of those infinite positions may have an f
in them. However,
because of the at-least-one nature of TheseT
, we know we have at least
one f at one position somewhere.
A
has potentially many Steps
f af
s, each stored at a different
Natural
position, with the guaruntee that at least one f
exists.
Can be useful for using with the Monoidal
instance
of TheseT
.
interpret
ing it requires at least an Alt
instance in the target context, since we have to handle potentially more
than one f
.
This type is essentailly the same as
(except with a different NEMapF
(Sum
Natural
)Semigroup
instance).
Instances
HFunctor (Steps :: (k -> Type) -> k -> Type) Source # | |
HTraversable (Steps :: (k -> Type) -> k -> Type) Source # | |
Defined in Data.HFunctor.HTraversable | |
HTraversable1 (Steps :: (k -> Type) -> k -> Type) Source # | |
Defined in Data.HFunctor.HTraversable | |
Inject (Steps :: (k -> Type) -> k -> Type) Source # | Injects into a singleton map at 0; same behavior as |
Alt f => Interpret (Steps :: (Type -> Type) -> Type -> Type) (f :: Type -> Type) Source # | |
Functor f => Functor (Steps f) Source # | |
Foldable f => Foldable (Steps f) Source # | |
Defined in Control.Applicative.Step fold :: Monoid m => Steps f m -> m # foldMap :: Monoid m => (a -> m) -> Steps f a -> m # foldMap' :: Monoid m => (a -> m) -> Steps f a -> m # foldr :: (a -> b -> b) -> b -> Steps f a -> b # foldr' :: (a -> b -> b) -> b -> Steps f a -> b # foldl :: (b -> a -> b) -> b -> Steps f a -> b # foldl' :: (b -> a -> b) -> b -> Steps f a -> b # foldr1 :: (a -> a -> a) -> Steps f a -> a # foldl1 :: (a -> a -> a) -> Steps f a -> a # elem :: Eq a => a -> Steps f a -> Bool # maximum :: Ord a => Steps f a -> a # minimum :: Ord a => Steps f a -> a # | |
Traversable f => Traversable (Steps f) Source # | |
Contravariant f => Contravariant (Steps f) Source # | Since: 0.3.0.0 |
Eq1 f => Eq1 (Steps f) Source # | |
Ord1 f => Ord1 (Steps f) Source # | |
Defined in Control.Applicative.Step | |
Read1 f => Read1 (Steps f) Source # | |
Defined in Control.Applicative.Step | |
Show1 f => Show1 (Steps f) Source # | |
Invariant f => Invariant (Steps f) Source # | Since: 0.3.0.0 |
Defined in Control.Applicative.Step | |
Foldable1 f => Foldable1 (Steps f) Source # | |
Pointed f => Pointed (Steps f) Source # | |
Defined in Control.Applicative.Step | |
Traversable1 f => Traversable1 (Steps f) Source # | |
Functor f => Alt (Steps f) Source # | Left-biased untion |
Eq (f a) => Eq (Steps f a) Source # | |
(Typeable a, Typeable f, Typeable k, Data (f a)) => Data (Steps f a) Source # | |
Defined in Control.Applicative.Step gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Steps f a -> c (Steps f a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Steps f a) # toConstr :: Steps f a -> Constr # dataTypeOf :: Steps f a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Steps f a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Steps f a)) # gmapT :: (forall b. Data b => b -> b) -> Steps f a -> Steps f a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Steps f a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Steps f a -> r # gmapQ :: (forall d. Data d => d -> u) -> Steps f a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Steps f a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Steps f a -> m (Steps f a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Steps f a -> m (Steps f a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Steps f a -> m (Steps f a) # | |
Ord (f a) => Ord (Steps f a) Source # | |
Defined in Control.Applicative.Step | |
Read (f a) => Read (Steps f a) Source # | |
Show (f a) => Show (Steps f a) Source # | |
Generic (Steps f a) Source # | |
Semigroup (Steps f a) Source # | Appends the items back-to-back, shifting all of the items in the
second map. Matches the behavior as the fixed-point of |
type Rep (Steps f a) Source # | |
Defined in Control.Applicative.Step |
An f a
, along with a Bool
flag
Flagged
f a ~ (Bool
, f a) Flagged f ~ ((,) Bool):.:
f -- functor composition
Creation with inject
or pure
uses False
as the
boolean.
You can think of it as an f a
that is "flagged" with a boolean value,
and that value can indicuate whether or not it is "pure" (made with
inject
or pure
) as False
, or "impure"
(made from some other source) as True
. However, False
may be always
created directly, of course, using the constructor.
You can think of it like a Step
that is either 0 or 1, as well.
interpret
ing it requires no constraint on the
target context.
This type is equivalent (along with its instances) to:
Flagged | |
|
Instances
HFunctor (Flagged :: (k -> Type) -> k -> Type) Source # | |
HTraversable (Flagged :: (k -> Type) -> k -> Type) Source # | |
Defined in Data.HFunctor.HTraversable | |
HTraversable1 (Flagged :: (k -> Type) -> k -> Type) Source # | |
Defined in Data.HFunctor.HTraversable | |
HBind (Flagged :: (k -> Type) -> k -> Type) Source # | |
Inject (Flagged :: (k -> Type) -> k -> Type) Source # | Injects with |
Interpret (Flagged :: (k -> Type) -> k -> Type) (f :: k -> Type) Source # | |
Functor f => Functor (Flagged f) Source # | |
Applicative f => Applicative (Flagged f) Source # | |
Foldable f => Foldable (Flagged f) Source # | |
Defined in Control.Applicative.Step fold :: Monoid m => Flagged f m -> m # foldMap :: Monoid m => (a -> m) -> Flagged f a -> m # foldMap' :: Monoid m => (a -> m) -> Flagged f a -> m # foldr :: (a -> b -> b) -> b -> Flagged f a -> b # foldr' :: (a -> b -> b) -> b -> Flagged f a -> b # foldl :: (b -> a -> b) -> b -> Flagged f a -> b # foldl' :: (b -> a -> b) -> b -> Flagged f a -> b # foldr1 :: (a -> a -> a) -> Flagged f a -> a # foldl1 :: (a -> a -> a) -> Flagged f a -> a # toList :: Flagged f a -> [a] # length :: Flagged f a -> Int # elem :: Eq a => a -> Flagged f a -> Bool # maximum :: Ord a => Flagged f a -> a # minimum :: Ord a => Flagged f a -> a # | |
Traversable f => Traversable (Flagged f) Source # | |
Defined in Control.Applicative.Step | |
Eq1 f => Eq1 (Flagged f) Source # | |
Ord1 f => Ord1 (Flagged f) Source # | |
Defined in Control.Applicative.Step | |
Read1 f => Read1 (Flagged f) Source # | |
Defined in Control.Applicative.Step | |
Show1 f => Show1 (Flagged f) Source # | |
Foldable1 f => Foldable1 (Flagged f) Source # | |
Pointed f => Pointed (Flagged f) Source # | |
Defined in Control.Applicative.Step | |
Traversable1 f => Traversable1 (Flagged f) Source # | |
Eq (f a) => Eq (Flagged f a) Source # | |
(Typeable a, Typeable f, Typeable k, Data (f a)) => Data (Flagged f a) Source # | |
Defined in Control.Applicative.Step gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Flagged f a -> c (Flagged f a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Flagged f a) # toConstr :: Flagged f a -> Constr # dataTypeOf :: Flagged f a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Flagged f a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Flagged f a)) # gmapT :: (forall b. Data b => b -> b) -> Flagged f a -> Flagged f a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Flagged f a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Flagged f a -> r # gmapQ :: (forall d. Data d => d -> u) -> Flagged f a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Flagged f a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Flagged f a -> m (Flagged f a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Flagged f a -> m (Flagged f a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Flagged f a -> m (Flagged f a) # | |
Ord (f a) => Ord (Flagged f a) Source # | |
Defined in Control.Applicative.Step | |
Read (f a) => Read (Flagged f a) Source # | |
Show (f a) => Show (Flagged f a) Source # | |
Generic (Flagged f a) Source # | |
type Rep (Flagged f a) Source # | |
Defined in Control.Applicative.Step type Rep (Flagged f a) = D1 ('MetaData "Flagged" "Control.Applicative.Step" "functor-combinators-0.3.6.0-inplace" 'False) (C1 ('MetaCons "Flagged" 'PrefixI 'True) (S1 ('MetaSel ('Just "flaggedFlag") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "flaggedVal") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f a)))) |
Steppers
stepUp :: (f :+: Step f) ~> Step f Source #
Unshift an item into a Step
. Because a
is Step
ff :+: f :+:
f :+: f :+: ...
forever, this basically conses an additional
possibility of f
to the beginning of it all.
You can think of it as reassociating
f :+: ( f :+: f :+: f :+: ...)
into
f :+: f :+: f :+: f :+: ...
stepUp
(L1
"hello") --Step
0 "hello" stepUp (R1
(Step 1 "hello")) -- Step 2 "hello"
stepDown :: Step f ~> (f :+: Step f) Source #
Pop off the first item in a Step
. Because a
is Step
ff :+:
f :+: f :+: ...
forever, this matches on the first branch.
You can think of it as reassociating
f :+: f :+: f :+: f :+: ...
into
f :+: ( f :+: f :+: f :+: ...)
stepDown
(Step
2 "hello") --R1
(Step 1 "hello") stepDown (Step 0 "hello") --L1
"hello"
stepsUp :: These1 f (Steps f) ~> Steps f Source #
Unshift an item into a Steps
. Because a
is Steps
ff
forever, this basically conses an
additional possibility of These1
f These1
f These1
f These1
...f
to the beginning of it all.
You can think of it as reassociating
fThese1
( fThese1
fThese1
fThese1
...)
into
fThese1
fThese1
fThese1
fThese1
...
If you give:
stepsDown :: Steps f ~> These1 f (Steps f) Source #
Pop off the first item in a Steps
. Because a
is Steps
ff
forever, this matches on the first branch.These1
f These1
f These1
...
You can think of it as reassociating
fThese1
fThese1
fThese1
fThese1
...
into
fThese1
( fThese1
fThese1
fThese1
...)
It returns:
Void
absurd1 :: V1 a -> f a Source #
We have a natural transformation between V1
and any other
functor f
with no constraints.
is uninhabited for all Void2
a ba
and b
.
Instances
HFunctor (Void2 :: (k1 -> Type) -> k2 -> Type) Source # | |
HTraversable (Void2 :: (k1 -> Type) -> k2 -> Type) Source # | |
Defined in Data.HFunctor.HTraversable | |
HTraversable1 (Void2 :: (k1 -> Type) -> k2 -> Type) Source # | |
Defined in Data.HFunctor.HTraversable | |
Functor (Void2 a :: Type -> Type) Source # | |
Foldable (Void2 a :: Type -> Type) Source # | |
Defined in Control.Applicative.Step fold :: Monoid m => Void2 a m -> m # foldMap :: Monoid m => (a0 -> m) -> Void2 a a0 -> m # foldMap' :: Monoid m => (a0 -> m) -> Void2 a a0 -> m # foldr :: (a0 -> b -> b) -> b -> Void2 a a0 -> b # foldr' :: (a0 -> b -> b) -> b -> Void2 a a0 -> b # foldl :: (b -> a0 -> b) -> b -> Void2 a a0 -> b # foldl' :: (b -> a0 -> b) -> b -> Void2 a a0 -> b # foldr1 :: (a0 -> a0 -> a0) -> Void2 a a0 -> a0 # foldl1 :: (a0 -> a0 -> a0) -> Void2 a a0 -> a0 # toList :: Void2 a a0 -> [a0] # elem :: Eq a0 => a0 -> Void2 a a0 -> Bool # maximum :: Ord a0 => Void2 a a0 -> a0 # minimum :: Ord a0 => Void2 a a0 -> a0 # | |
Traversable (Void2 a :: Type -> Type) Source # | |
Contravariant (Void2 a :: Type -> Type) Source # | Since: 0.3.0.0 |
Eq1 (Void2 a :: Type -> Type) Source # | |
Ord1 (Void2 a :: Type -> Type) Source # | |
Defined in Control.Applicative.Step | |
Read1 (Void2 a :: Type -> Type) Source # | |
Defined in Control.Applicative.Step | |
Show1 (Void2 a :: Type -> Type) Source # | |
Invariant (Void2 a :: Type -> Type) Source # | Since: 0.3.0.0 |
Defined in Control.Applicative.Step | |
Apply (Void2 a :: Type -> Type) Source # | |
Alt (Void2 a :: Type -> Type) Source # | |
Bind (Void2 a :: Type -> Type) Source # | |
Eq (Void2 a b) Source # | |
(Typeable a, Typeable b, Typeable k1, Typeable k2) => Data (Void2 a b) Source # | |
Defined in Control.Applicative.Step gfoldl :: (forall d b0. Data d => c (d -> b0) -> d -> c b0) -> (forall g. g -> c g) -> Void2 a b -> c (Void2 a b) # gunfold :: (forall b0 r. Data b0 => c (b0 -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Void2 a b) # toConstr :: Void2 a b -> Constr # dataTypeOf :: Void2 a b -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Void2 a b)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Void2 a b)) # gmapT :: (forall b0. Data b0 => b0 -> b0) -> Void2 a b -> Void2 a b # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Void2 a b -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Void2 a b -> r # gmapQ :: (forall d. Data d => d -> u) -> Void2 a b -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Void2 a b -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Void2 a b -> m (Void2 a b) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Void2 a b -> m (Void2 a b) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Void2 a b -> m (Void2 a b) # | |
Ord (Void2 a b) Source # | |
Defined in Control.Applicative.Step | |
Read (Void2 a b) Source # | |
Show (Void2 a b) Source # | |
Generic (Void2 a b) Source # | |
Semigroup (Void2 a b) Source # | |
type Rep (Void2 a b) Source # | |
is uninhabited for all Void3
a ba
and b
.
Instances
HFunctor (Void3 f :: (k2 -> Type) -> k3 -> Type) Source # | |
HTraversable (Void3 f :: (k2 -> Type) -> k3 -> Type) Source # | |
Defined in Data.HFunctor.HTraversable | |
HBifunctor (Void3 :: (k -> Type) -> (k -> Type) -> k -> Type) Source # | |
Defined in Data.HFunctor.Internal hleft :: forall (f :: k0 -> Type) (j :: k0 -> Type) (g :: k0 -> Type). (f ~> j) -> Void3 f g ~> Void3 j g Source # hright :: forall (g :: k0 -> Type) (l :: k0 -> Type) (f :: k0 -> Type). (g ~> l) -> Void3 f g ~> Void3 f l Source # hbimap :: forall (f :: k0 -> Type) (j :: k0 -> Type) (g :: k0 -> Type) (l :: k0 -> Type). (f ~> j) -> (g ~> l) -> Void3 f g ~> Void3 j l Source # | |
Associative (Void3 :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Source # | |
Defined in Data.HBifunctor.Associative type NonEmptyBy Void3 :: (Type -> Type) -> Type -> Type Source # type FunctorBy Void3 :: (Type -> Type) -> Constraint Source # associating :: forall (f :: Type -> Type) (g :: Type -> Type) (h :: Type -> Type). (FunctorBy Void3 f, FunctorBy Void3 g, FunctorBy Void3 h) => Void3 f (Void3 g h) <~> Void3 (Void3 f g) h Source # appendNE :: forall (f :: Type -> Type). Void3 (NonEmptyBy Void3 f) (NonEmptyBy Void3 f) ~> NonEmptyBy Void3 f Source # matchNE :: forall (f :: Type -> Type). FunctorBy Void3 f => NonEmptyBy Void3 f ~> (f :+: Void3 f (NonEmptyBy Void3 f)) Source # consNE :: forall (f :: Type -> Type). Void3 f (NonEmptyBy Void3 f) ~> NonEmptyBy Void3 f Source # toNonEmptyBy :: forall (f :: Type -> Type). Void3 f f ~> NonEmptyBy Void3 f Source # | |
SemigroupIn (Void3 :: (Type -> Type) -> (Type -> Type) -> Type -> Type) f Source # | All functors are semigroups in the semigroupoidal category on |
Functor (Void3 a b :: Type -> Type) Source # | |
Foldable (Void3 a b :: Type -> Type) Source # | |
Defined in Control.Applicative.Step fold :: Monoid m => Void3 a b m -> m # foldMap :: Monoid m => (a0 -> m) -> Void3 a b a0 -> m # foldMap' :: Monoid m => (a0 -> m) -> Void3 a b a0 -> m # foldr :: (a0 -> b0 -> b0) -> b0 -> Void3 a b a0 -> b0 # foldr' :: (a0 -> b0 -> b0) -> b0 -> Void3 a b a0 -> b0 # foldl :: (b0 -> a0 -> b0) -> b0 -> Void3 a b a0 -> b0 # foldl' :: (b0 -> a0 -> b0) -> b0 -> Void3 a b a0 -> b0 # foldr1 :: (a0 -> a0 -> a0) -> Void3 a b a0 -> a0 # foldl1 :: (a0 -> a0 -> a0) -> Void3 a b a0 -> a0 # toList :: Void3 a b a0 -> [a0] # null :: Void3 a b a0 -> Bool # length :: Void3 a b a0 -> Int # elem :: Eq a0 => a0 -> Void3 a b a0 -> Bool # maximum :: Ord a0 => Void3 a b a0 -> a0 # minimum :: Ord a0 => Void3 a b a0 -> a0 # | |
Traversable (Void3 a b :: Type -> Type) Source # | |
Defined in Control.Applicative.Step | |
Contravariant (Void3 a b :: Type -> Type) Source # | Since: 0.3.0.0 |
Eq1 (Void3 a b :: Type -> Type) Source # | |
Ord1 (Void3 a b :: Type -> Type) Source # | |
Defined in Control.Applicative.Step | |
Read1 (Void3 a b :: Type -> Type) Source # | |
Defined in Control.Applicative.Step liftReadsPrec :: (Int -> ReadS a0) -> ReadS [a0] -> Int -> ReadS (Void3 a b a0) # liftReadList :: (Int -> ReadS a0) -> ReadS [a0] -> ReadS [Void3 a b a0] # liftReadPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec (Void3 a b a0) # liftReadListPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec [Void3 a b a0] # | |
Show1 (Void3 a b :: Type -> Type) Source # | |
Invariant (Void3 a b :: Type -> Type) Source # | Since: 0.3.0.0 |
Defined in Control.Applicative.Step | |
Apply (Void3 a b :: Type -> Type) Source # | |
Alt (Void3 a b :: Type -> Type) Source # | |
Bind (Void3 a b :: Type -> Type) Source # | |
Eq (Void3 a b c) Source # | |
(Typeable a, Typeable b, Typeable c, Typeable k1, Typeable k2, Typeable k3) => Data (Void3 a b c) Source # | |
Defined in Control.Applicative.Step gfoldl :: (forall d b0. Data d => c0 (d -> b0) -> d -> c0 b0) -> (forall g. g -> c0 g) -> Void3 a b c -> c0 (Void3 a b c) # gunfold :: (forall b0 r. Data b0 => c0 (b0 -> r) -> c0 r) -> (forall r. r -> c0 r) -> Constr -> c0 (Void3 a b c) # toConstr :: Void3 a b c -> Constr # dataTypeOf :: Void3 a b c -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c0 (t d)) -> Maybe (c0 (Void3 a b c)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c0 (t d e)) -> Maybe (c0 (Void3 a b c)) # gmapT :: (forall b0. Data b0 => b0 -> b0) -> Void3 a b c -> Void3 a b c # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Void3 a b c -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Void3 a b c -> r # gmapQ :: (forall d. Data d => d -> u) -> Void3 a b c -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Void3 a b c -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Void3 a b c -> m (Void3 a b c) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Void3 a b c -> m (Void3 a b c) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Void3 a b c -> m (Void3 a b c) # | |
Ord (Void3 a b c) Source # | |
Defined in Control.Applicative.Step | |
Read (Void3 a b c) Source # | |
Show (Void3 a b c) Source # | |
Generic (Void3 a b c) Source # | |
Semigroup (Void3 a b c) Source # | |
type NonEmptyBy (Void3 :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Source # | |
type FunctorBy (Void3 :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Source # | |
Defined in Data.HBifunctor.Associative | |
type Rep (Void3 a b c) Source # | |