Hello,
the web page http://research.microsoft.com/~simonpj/multi.ps.gz mentioned
in
http://www.haskell.org/ghc/docs/latest/html/users_guide/type-extensions.html#multi-param-type-classes
is not reachable or does not exist anymore.
Any hints how I can get my hands on this paper are welcome
Jan
----- Original Message -----
From: "robert dockins" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Cc: <haskell-cafe@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:
http://www.haskell.org/ghc/docs/latest/html/users_guide/type-extensions.html#multi-param-type-classes
http://www.haskell.org/ghc/docs/latest/html/users_guide/type-extensions.html#functional-dependencies
http://haskell.org/hawiki/FunDeps
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@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe