This is a purescript implementation of Selective Applicative Functors, described in this paper.
Selective
is split into Select
and Selective
, where Select
is
Selective
without pure
, to fit in more with the purescript ecosystem. So,
Select
is to Selective
as Apply
is to Applicative
, and Bind
is to
Monad
.
Ideally, Monad
would be a subclass of Selective
, because every Monad
is
a Selective
, but this is not prelude
, so we can't do that. Instead, we
provide a wrapper, SelectM
, which is a newtype, which when it wraps
a Monad
, is also Selective
. This library also provides a lot of Selective
instances for popular monads.