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