Conversions between algebraic classes and F-algebras.

Algebraic classes are type classes where all the methods return a value of the same type, which is also the class parameter. Examples from base are Num and Monoid.

F-algebras are functions f a -> a, where the functor f is called the signature, and the type a the carrier.

This package relates these 2 concepts, and can create conversions between the two using Template Haskell. More specifically, it can generate:

  • signatures from algebraic classes

  • instances of algebraic classes from F-algebras.

This is useful because type classes are more commonly used in Haskell than F-algebras, but F-algebras are easier to work with, because they are just functions.