HaskellWiki

Haskell | Wiki community | Recent changes
Random page | Special pages

 

Not logged in
Log in | Help

Data declaration with constraint

Categories: FAQ

Contents

1 Problem

1.1 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. I like to declare an instance for an type constructor class for the type constructor T but its methods require type constraints that depend on the particular type constructor T.

E.g.

instance Vector T where
   add (Cons x) (Cons y) = Cons (x+y)    -- requires Num constraint on type a 

1.2 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.

2 Solution

But how can one bake type constraints into a type? You cannot. One should insert a discussion here, whether it is sensible to want this.

For now you have to stick to multi-parameter type classes, where T a and a are separate arguments.


3 See also

Retrieved from "http://haskell.org/haskellwiki/Data_declaration_with_constraint"

This page has been accessed 365 times. This page was last modified 17:43, 21 December 2007. Recent content is available under a simple permissive license.