Free functors, adjoint to functors that forget class constraints.

Latest on Hackage:0.8.1

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

BSD3 licensed by Sjoerd Visscher
Maintained by

A free functor is a left adjoint to a forgetful functor. It used to be the case that the only category that was easy to work with in Haskell was Hask itself, so there were no interesting forgetful functors.

But the new ConstraintKinds feature of GHC provides an easy way of creating subcategories of Hask. That brings interesting opportunities for free (and cofree) functors.

The examples directory contains an implementation of non-empty lists as free semigroups, and automata as free actions. The standard example of free higher order functors is free monads, and this definition can be found in Data.Functor.HFree.



0.8 -> 0.8.1
- Added HHCofree
- Changes towards support for `SuperClass1` in TH code for `Free`

0.7.2 -> 0.8
- Updated for GHC 8.2
- Updated to base-4.10
- Updated to template-haskell-2.12
- Updated to algebraic-classes-0.8

0.7.1 -> 0.7.2
- Fixed Traversable instance of `Free c`

0.7 -> 0.7.1
- Rewritten SuperClass1

0.6.5 -> 0.7
- Allow contravariant uses of HFree
- Added HHFree for free profunctors/categories/arrows
- Updated to base-4.9
- Updated to template-haskell-2.11
- Updated to comonad-5
- Updated to constraints-0.9
- Updated to algebraic-classes-0.7 -> 0.6.5
- Updated to transformers-
- Updated to constraints-0.6

0.6.4 ->
- Raise lower bounds of template-haskell -> 0.6.4
- Updated to algebraic-classes 0.6
- Updated to template-haskell- ->
- Updated to void 0.7 ->
- Updated to constraints 0.4

0.6.2 ->
- Updated to comonad 4.2
- Updated to transformers -> 0.6.2
- Updated to template-haskell-
- Added instance Applicative (HFree Monad f)

0.6.1 ->
- Added a changelog

0.6 -> 0.6.1
- Updated to comonad-4.0
- Added convert to Data.Functor.HCofree
comments powered byDisqus