/purescript-selective-functors

purescript implementation of selective functors

Primary LanguagePureScriptMIT LicenseMIT

purescript-selective-functors

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.