Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
The definition of Aps
.
Most of this is reexported by ApNormalize.
Synopsis
- data Aps f a where
- (<$>^) :: (a -> b) -> f a -> Aps f b
- (<*>^) :: Applicative f => Aps f (a -> b) -> f a -> Aps f b
- liftAps :: f a -> Aps f a
- lowerAps :: Applicative f => Aps f a -> f a
- liftA2Aps :: Applicative f => (a -> b -> c) -> f a -> Aps f b -> Aps f c
- apsToApDList :: Applicative f => Aps f a -> ApDList f a
Normalizing applicative functors
An applicative functor transformer which accumulates f
-actions (things of type f x
)
in a normal form.
It constructs a value of type f a
with the following syntactic invariant.
It depends on the number of f
-actions a1 ... an
composing it,
which are delimited using liftAps
:
- Zero action:
pure x
- One action:
f <$> a1
- Two or more actions:
liftA2 f a1 a2 <*> a3 <*> ... <*> an
Pure :: a -> Aps f a | |
FmapLift :: (x -> a) -> f x -> Aps f a | |
LiftA2Aps :: (x -> y -> z -> a) -> f x -> f y -> ApDList f z -> Aps f a |
Instances
Functor (Aps f) Source # | |
Applicative f => Applicative (Aps f) Source # | |
(<$>^) :: (a -> b) -> f a -> Aps f b infixl 4 Source #
f <$>^ u :: Aps f b
is a delayed representation of f <$> u :: f b
,
so that it can be fused with other applicative operations.
f <$>^ u
is a shorthand for f <$>
.liftAps
u
liftA2Aps :: Applicative f => (a -> b -> c) -> f a -> Aps f b -> Aps f c Source #
Append an action to the left of an Aps
.
apsToApDList :: Applicative f => Aps f a -> ApDList f a Source #