# functor-combinators: Tools for functor combinator-based program design

**This is a package candidate release!** Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

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!

[Skip to Readme]

## Properties

Versions | 0.1.0.0, 0.1.0.1, 0.1.1.0, 0.1.1.1, 0.2.0.0, 0.3.0.0, 0.3.1.0, 0.3.2.0, 0.3.3.0, 0.3.4.0, 0.3.4.1, 0.3.4.2, 0.3.5.0, 0.3.5.1, 0.3.6.0, 0.4.0.0, 0.4.1.0, 0.4.1.1, 0.4.1.2, 0.4.1.2, 0.4.1.3 |
---|---|

Change log | CHANGELOG.md |

Dependencies | assoc, base (>=4.12 && <5), bifunctors, comonad, constraints, containers, contravariant, deriving-compat, free, hashable, invariant, kan-extensions, mmorph, mtl, natural-transformation, nonempty-containers (>=0.3.4.4), pointed, profunctors, semigroupoids, sop-core, StateVar, tagged, these, transformers, trivial-constraint (>=0.5), unordered-containers, vinyl [details] |

License | BSD-3-Clause |

Copyright | (c) Justin Le 2019 |

Author | Justin Le |

Maintainer | justin@jle.im |

Category | Data |

Home page | https://github.com/mstksg/functor-combinators#readme |

Bug tracker | https://github.com/mstksg/functor-combinators/issues |

Source repo | head: git clone https://github.com/mstksg/functor-combinators |

Uploaded | by jle at 2023-01-30T00:45:37Z |

## Modules

[Index] [Quick Jump]

*Control**Applicative**Monad**Natural*

*Data**Functor**Apply*- Data.Functor.Combinator
*Contravariant**Invariant*

- Data.HBifunctor
- Data.HFunctor

## Downloads

- functor-combinators-0.4.1.2.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)

#### Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees