At 12:42 AM +0400 2/19/07, David Tolpin wrote:
On Mon, 19 Feb 2007 00:30:47 +0400, Sebastian Sylvan
<[EMAIL PROTECTED]> wrote:
Well, I guess the H98 report would be a good start. But there are
multiple tutorials on type classes that will cover this, most of which
are available from haskell.org
Sebastian,
I did read H98 and would like an exact reference.
See section 4.3.2, the third bullet item in the bulleted list. (Note
that the last sentence of that bullet item says that context
inference--though often possible--is deliberately eschewed.)
The key point is that Haskell won't guess, and in particular it won't
contradict what you tell it. I think that's the major flaw in your
reasoning, you expect Haskell to take an explicit type that you, the
programmer, supplies, and change it into something else.
Why is this rule applied differently to type declarations and to instances?
In the original example you are explicitly telling Haskell that "m" is
*not* in the Monad (or any other) class.
I am not telling that. I am telling that m is an instance of a class
all instances of which are in the Monad class. How is this different
from specifying class constraint in type declarations?
David
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe