Portability | non-portable |
---|---|
Stability | experimental |
Maintainer | sjoerd@w3future.com |
Safe Haskell | None |
Documentation
class Traversable f => AlgebraSignature f whereSource
type Class f :: * -> ConstraintSource
The class for which f
is the signature.
algebra :: AlgebraSignature f => f a -> aSource
An algebra f a -> a
corresponds to an instance of a
of the class Class f
.
In some cases, for example for tuple types, you can give an algebra generically for every signature:
instance (Class f m, Class f n) => Algebra f (m, n) where algebra fmn = (evaluate (fmap fst fmn), evaluate (fmap snd fmn))