Data declaration with constraint
Jump to navigation
Jump to search
Problem
Question
I have declared
data T a = C a => Cons a
and I hoped that now the type checker knows, that every value of type T a
satisfies the type constraint on a
.
Answer
Only functions can have type constraints.
The type constraint of a data
only refers to the constructors.
The designers of Haskell 98 do now think, that it was a bad decision to allow constraints on constructors.
Solution
But how can one bake type constraints into a type ? ...
See also
- Henning Thielemann in Haskell-Cafe: Context for type parameters of type constructors
- Mark Nicholls in Haskell-Cafe: nice simple problem for someone struggling....