This is a purescript implementation of Selective Applicative Functors, described in this paper.
Selective is split into
pure, to fit in more with the purescript ecosystem. So,
Select is to
Apply is to
Bind is to
Monad would be a subclass of
Selective, because every
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
Monad, is also
Selective. This library also provides a lot of
instances for popular monads.