Tools for working with functor combinators: types that take functors (or
other indexed types) and returns a new functor that "enhances" or "mixes"
them in some way. In the process, you can design featureful programs by
composing smaller "primitives" using basic unversal combinators.
The main entry point is Data.Functor.Combinators, but more fine-grained
functionality and extra combinators (some of them re-implementations for
compatibility) are available in other modules as well.
This library does not define new functor combinators for the most part,
but rather re-exports them from different parts of the Haskell ecosystem
and provides a uniform interface.
See the README for a quick overview, and also
https://blog.jle.im/entry/functor-combinatorpedia.html for an in-depth
dive into the motivation behind functor combinator-driven development,
examples of the functor combinators in this library, and details about how
to use these abstractions!