functioanl dependencies bug

Iavor Diatchki <[email protected]>
Newsgroups gmane.comp.lang.haskell.hugs.bugs
Message-ID <[email protected]>
 > module Test where

Consider the following class declarations:

 > class C a b | a -> b
 > class C a b => D a

Given the way functional dependencies work at the moment,
Hugs should probably report an error that "b" is missing (this is what 
GHC does).
I don't really like this restriction (perhaps the determined parameters
could be automatically added?), but the current situation with Hugs
is very confusing... Here is what happens:

Given the following instance declarations:

 > instance C Int Bool
 > instance C Char Int
 > instance D Int

Hugs is happy, but if I swap the top two lines (the instances for C) it 
complains:
ERROR "bug3.lhs":18 - Cannot build superclass instance
*** Instance            : D Int
*** Context supplied    : ()
*** Required superclass : C Int Int

I am guessing, but I think "b" ends up being a free type variable, and 
instances are
processed from the bottom up (the ubiquitous stack?), so when I swap the 
declarations,
"b" gets bound to Int...

bye
iavor
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.