Preface_specs.Apply
An Apply
is a functor with lifting and sequencing capabilities. Apply
is more general (and by extension weaker) than a Applicative
. An Apply
is also a Functor
.
To have a predictable behaviour, the instance of Apply
must obey some laws.
apply = lift2 id
lift2 f x y = f <$> x <*> y
u *> v = (id <$ u) <*> v
u <* v = lift2 const u v
lift2 p (lift2 q u v) = lift2 f u % lift2 g v
module type WITH_PRODUCT = sig ... end
Minimal interface using product
.
module type WITH_APPLY = sig ... end
Minimal interface using apply
.
module type WITH_LIFT2 = sig ... end
Minimal interface using lift2
.
module type WITH_MAP_AND_PRODUCT = sig ... end
Minimal interface using map
and product
.
module type WITH_MAP_AND_APPLY = sig ... end
Minimal interface using map
and product
.
module type WITH_MAP_AND_LIFT2 = sig ... end
Minimal interface using map
and lift2
.
module type CORE = sig ... end
Basis operations.
module type OPERATION = sig ... end
Additional operations.
module type SYNTAX = sig ... end
Syntax extensions.
module type INFIX = sig ... end
Infix operators.
module type API = sig ... end
The complete interface of an Apply
.