| Copyright | (c) Justin Le 2019 |
|---|---|
| License | BSD3 |
| Maintainer | [email protected] |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Control.Applicative.Step
Contents
Description
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.
Stepf 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 :+:.
interpreting 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 # | |
| HBind (Step :: (k -> Type) -> k -> Type) Source # | |
| Inject (Step :: (k -> Type) -> k -> Type) Source # | Injects with 0. |
| Interpret (Step :: (Type -> Type) -> Type -> 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 Methods fold :: Monoid m => Step f m -> 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 # | |
| 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 # | |
| Foldable1 f => Foldable1 (Step f) Source # | |
| Pointed f => Pointed (Step f) Source # | |
Defined in Control.Applicative.Step | |
| Traversable1 f => Traversable1 (Step f) Source # | |
| 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 Methods 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 :: (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 C (Step :: (Type -> Type) -> Type -> Type) Source # | |
Defined in Data.HFunctor.Interpret | |
| 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.1.1.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 as, each at a given Natural index.
Steps f a ~MapNatural(f a) Steps f ~MapNatural:.:f -- functor composition
It is the fixed point of applications of TheseT.
You can think of this as an infinite sparse array of f as.
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 afs, 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.
interpreting 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 # | |
| Inject (Steps :: (k -> Type) -> k -> Type) Source # | Injects into a singleton map at 0; same behavior as |
| Interpret (Steps :: (Type -> Type) -> Type -> Type) Source # | |
| Functor f => Functor (Steps f) Source # | |
| Foldable f => Foldable (Steps f) Source # | |
Defined in Control.Applicative.Step Methods fold :: Monoid m => Steps f m -> 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 # | |
| 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 # | |
| 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 Methods 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 :: (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 # | |
| 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 C (Steps :: (Type -> Type) -> Type -> Type) Source # | |
| type Rep (Steps f a) Source # | |
Defined in Control.Applicative.Step | |
An f a, along with a Bool flag
Flaggedf 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.
interpreting it requires no constraint on the
target context.
This type is equivalent (along with its instances) to:
Constructors
| Flagged | |
Fields
| |
Instances
| HFunctor (Flagged :: (k -> Type) -> k -> Type) Source # | |
| HBind (Flagged :: (k -> Type) -> k -> Type) Source # | |
| Inject (Flagged :: (k -> Type) -> k -> Type) Source # | Injects with |
| Interpret (Flagged :: (Type -> Type) -> Type -> Type) Source # | |
| Functor f => Functor (Flagged f) Source # | |
| Applicative f => Applicative (Flagged f) Source # | |
Defined in Control.Applicative.Step | |
| Foldable f => Foldable (Flagged f) Source # | |
Defined in Control.Applicative.Step Methods fold :: Monoid m => Flagged f m -> 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 Methods 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 :: (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 C (Flagged :: (Type -> Type) -> Type -> Type) Source # | |
Defined in Data.HFunctor.Interpret type C (Flagged :: (Type -> Type) -> Type -> Type) = (Unconstrained :: (Type -> Type) -> Constraint) | |
| 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.1.1.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") --Step0 "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(Step2 "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( fThese1fThese1fThese1...)
into
fThese1fThese1fThese1fThese1...
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
fThese1fThese1fThese1fThese1...
into
fThese1( fThese1fThese1fThese1...)
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 # | |
| Functor (Void2 a :: Type -> Type) Source # | |
| Foldable (Void2 a :: Type -> Type) Source # | |
Defined in Control.Applicative.Step Methods fold :: Monoid m => Void2 a m -> 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 # | |
Defined in Control.Applicative.Step | |
| 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 Methods liftReadsPrec :: (Int -> ReadS a0) -> ReadS [a0] -> Int -> ReadS (Void2 a a0) # liftReadList :: (Int -> ReadS a0) -> ReadS [a0] -> ReadS [Void2 a a0] # liftReadPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec (Void2 a a0) # liftReadListPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec [Void2 a a0] # | |
| Show1 (Void2 a :: Type -> Type) Source # | |
| 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 Methods 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 :: (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 # | |
| 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
| HBifunctor (Void3 :: (k1 -> Type) -> (k2 -> Type) -> k3 -> Type) Source # | |
| HFunctor (Void3 f :: (k2 -> Type) -> k1 -> Type) Source # | |
| Associative (Void3 :: (Type -> Type) -> (Type -> Type) -> Type -> Type) Source # | |
| Functor (Void3 a b :: Type -> Type) Source # | |
| Foldable (Void3 a b :: Type -> Type) Source # | |
Defined in Control.Applicative.Step Methods fold :: Monoid m => Void3 a b m -> 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 | |
| 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 Methods 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 # | |
| 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 Methods 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 :: (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 Rep (Void3 a b c) Source # | |