Difference between revisions of "Data declaration with constraint"

From HaskellWiki
Jump to navigation Jump to search
(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 T a = C a => Cons a
+
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

Problem

Question

I have declared

data C a  =>  T 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