Difference between revisions of "Data declaration with constraint"

From HaskellWiki
Jump to: navigation, 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