Data declaration with constraint
From HaskellWiki
(Difference between revisions)
(short introduction with reference to current discussion) |
(constraint must be in front of the type) |
||
| Line 5: | Line 5: | ||
I have declared | I have declared | ||
<haskell> | <haskell> | ||
| - | data | + | data C a => T a = Cons a |
</haskell> | </haskell> | ||
and I hoped that now the type checker knows, that every value of type <hask>T a</hask> satisfies the type constraint on <hask>a</hask>. | and I hoped that now the type checker knows, that every value of type <hask>T a</hask> satisfies the type constraint on <hask>a</hask>. | ||
Revision as of 17:36, 21 December 2007
Contents |
1 Problem
1.1 Question
I have declared
data C a => T a = Cons a
T a
a
1.2 Answer
Only functions can have type constraints.
The type constraint of adata
The designers of Haskell 98 do now think, that it was a bad decision to allow constraints on constructors.
2 Solution
But how can one bake type constraints into a type ? ...
3 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....
