Applicative functors and effects
While we have used ZipList
and the family of zip
functions as our initial intuition for the notion of applicative functors, there is a different notion that is helpful to understand most Applicative
instances: (computational) effects. The idea is that, whereas A
denotes a readily available value, F A
denotes a computation that yields a value of A
. Depending on the type of computation, F
, other relevant effects may happen during the computation. For example, the computation may fail for some reason, and thus not produce a value at all. We will explore this and several other other possible effects through different Applicative
instances.
Failing computations with Maybe
Failing computations may or may not yield a result. We have already modeled these using the Maybe
type constructor, where Just x
denotes a successful outcome with a result, x
, and Nothing
denotes failure to produce a result.
This type of constructor has the following instance
: