[Haskell-cafe] Question about classes from a Haskell newbie.
jscott at skynet.be
Wed May 25 08:29:09 EDT 2005
the web page http://research.microsoft.com/~simonpj/multi.ps.gz mentioned
is not reachable or does not exist anymore.
Any hints how I can get my hands on this paper are welcome
----- Original Message -----
From: "robert dockins" <robdockins at fastmail.fm>
To: <Jeff.Harper at handheld.com>
Cc: <haskell-cafe at haskell.org>
Sent: Tuesday, May 24, 2005 10:07 PM
Subject: Re: [Haskell-cafe] Question about classes from a Haskell newbie.
>> However, I didn't understand the syntax of the class declaration.
>> Lemmih wrote:
>> > import Complex
>> > class ConvertibleToComplex a b | a -> b where
>> > toComplex :: RealFloat b => a -> Complex b
>> I've looked at several sources to try to understand this declaration. I
>> can't find any examples where a class declaration takes two type
>> variables or uses the pipe symbol. One of the sources I used was
>> _Haskell 98 Language and Libraries The Revised Report_. I'm not an
>> expert at BNF notation, but the definitions for topdecl, tycls, and tyvar
>> in the grammar seems to exclude Lemmih's declaration.
>> If someone could point me to some sources that explain this notation, I'd
>> be very grateful.
> This is a multi-parameter typeclass (with functional dependencies), which
> is not a part of Haskell 98, so its no surprise that you didn't find it in
> the Report. The Muli-parameter part is pretty easy to understand: the
> type class simply introduces more than one type variable. Functional
> dependencies let you say which types should determine which other types.
> Here are some pages on these ideas:
> In this particular instance, what the class definition means is that
> 'ConvertaibleToComplex' is a class which relates two types 'a' and 'b' AND
> the type 'a' uniquely determines the type 'b'.
> Hope that helps,
> Robert Dockins
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
More information about the Haskell-Cafe