Data.Algebra
deriveInstance
deriveInstanceWith
class Algebra f a
algebraA
type family Signature c :: * -> *
class AlgebraSignature f