wiki:NewAxioms/TemplateHaskell

Version 1 (modified by goldfire, 17 months ago) (diff)

--

Template Haskell changes to support overlapping type family instances

The current form of a type family instance in Template Haskell is this constructor of the Dec type:

TySynInstD Name [Type] Type

Here is the proposed new constructor:

TySynInstD Name [TySynEqn]

where

data TySynEqn = TySynEqn [Type] Type

represents one equation with a list of left-hand side patterns and a single right-hand side result. The only alternate design on the table is to use a list of ([Type], Type) pairs instead of an extra datatype.