[GHC] #8477: Allow inferring ambiguous types
GHC
ghc-devs at haskell.org
Tue Nov 5 14:55:03 UTC 2013
#8477: Allow inferring ambiguous types
-------------------------------------+------------------------------------
Reporter: aavogt | Owner:
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.6.3
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture: Unknown/Multiple
Type of failure: None/Unknown | Difficulty: Unknown
Test Case: | Blocked By:
Blocking: | Related Tickets: 8390
-------------------------------------+------------------------------------
Comment (by simonpj):
I'm dubious about this
* Accepting ''inferred'' ambiguous types is a recipe for planting land-
mines that will only show up later. Requiring a type signature in such
cases seems quite reasonable to me.
* I tried [http://okmij.org/ftp/Haskell/TypeLambdaVal.hs]. The instance
on line 199 seems problematic; it fails both the ambiguity check and the
coverage condition. However I realise that the ambiguity check on the
instance declaration should really subsume the (liberal) coverage
condition. I'll fix that.
* Then the `TypeLambdaVal` example gives
{{{
T8477.hs:218:1:
Could not deduce (Apply
(HIF' (b0 -> HNothing) (HList (a0 :* xs0) -> HJust
a0))
(HBool b, x)
res)
arising from the ambiguity check for ‛hsafe_head’
from the context (Apply HNull x (HBool b),
Apply
(HIF' (b1 -> HNothing) (HList (a :* xs) -> HJust
a))
(HBool b, x)
res)
bound by the inferred type for ‛hsafe_head’:
(Apply HNull x (HBool b),
Apply
(HIF' (b1 -> HNothing) (HList (a :* xs) -> HJust a))
(HBool b, x)
res) =>
x -> res
at T8477.hs:(218,1)-(221,24)
The type variables ‛b0’, ‛a0’, ‛xs0’ are ambiguous
When checking that ‛hsafe_head’
has the inferred type ‛forall x res b b1 a xs.
(Apply HNull x (HBool b),
Apply
(HIF' (b1 -> HNothing) (HList (a :* xs) ->
HJust a))
(HBool b, x)
res) =>
x -> res’
Probable cause: the inferred type is ambiguous
}}}
and one other. Indeed, writing out that type may be a bit onerous, but
it really does look ambiguous to me!
So I'm inclined to "won't fix" for now.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8477#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list