[GHC] #9627: Type error with functional dependencies
GHC
ghc-devs at haskell.org
Tue Sep 23 20:38:34 UTC 2014
#9627: Type error with functional dependencies
-------------------------------------+-------------------------------------
Reporter: augustss | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.8.3
Resolution: | Keywords:
Operating System: | Architecture: Unknown/Multiple
Unknown/Multiple | Difficulty: Unknown
Type of failure: | Blocked By:
None/Unknown | Related Tickets:
Test Case: |
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
Indeed. Here is a more direct example:
{{{
class C a b | a -> b
instance C Int Bool
f :: C Int b => b -> Bool
f x = x
}}}
From which we get
{{{
Foo.hs:9:7:
Could not deduce (b ~ Bool)
from the context (C Int b)
}}}
Remember that GHC elaborates the program into System FC, generating
evidence.
* For type families, we know how to elaborate the program with proper,
abstractable evidence in System FC
* For functional dependencies I have no clue what evidence might look
like. All GHC does (and all Hugs does) is to generate extra unification
constraints; think of them as hints to guide the choice of how to
instantiate unification variables.
In the exmaple above there are no unification variables, so these hints do
nothing, and the program is rejected. It's the same with your larger
example.
If someone can explain how to elaborate functional dependencies into well-
typed evidence in System FC, that would be good. My inability to do so
was one of the reasons we developed type families and System FC in the
first place.
Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9627#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list