help wanted with type error message

Andreas Rossberg
Wed, 04 Apr 2001 18:17:15 +0200

Norman Ramsey wrote:
> > data Formula f => Row a = Row (f a, Weight)
> > type Weight = Float
> Hugs rejects this program:
> ERROR "hard.lhs" (line 14): Undefined type variable "f"

Right, f is not bound in the declaration of Row. Only the occurances of
type variables after the type constructor are binding occurances.

The fix is to turn Row into a binary constructor:

> data Formula f => Row f a = Row (f a, Weight)

BTW, contexts have no real meaning in data declarations - the
declaration above does not prevent you from writing

> type T = Row [] Int


	- Andreas

Andreas Rossberg,

"Computer games don't affect kids.
 If Pac Man affected us as kids, we would all be running around in
 darkened rooms, munching pills, and listening to repetitive music."