Typechecker / OverloadedStrings question 7.8 vs. 7.10
Simon Peyton Jones
simonpj at microsoft.com
Fri Jul 31 08:59:55 UTC 2015
| How hard would it be to give a different error message instead of "No
| instance ..." when the type variable is ambiguous? I always find this
| error slightly misleading, since it seems to me that there are
| multiple valid instances, not that there is "no instance".
What would you like it to say? I think it likely we could make it say that!
S
| -----Original Message-----
| From: Daniel Bergey [mailto:bergey at teallabs.org]
| Sent: 31 July 2015 02:23
| To: Michael Karg; Simon Peyton Jones
| Cc: ghc-devs
| Subject: Re: Typechecker / OverloadedStrings question 7.8 vs. 7.10
|
| On 2015-07-30 at 21:39, Michael Karg <mgoremeier at gmail.com> wrote:
| > I guess without that pragma, the string literals already imply t ~
| []
| > for Foldable t.
|
| You're basically right. Without OverloadedStrings, a string literal
| ("foo") is always a String. With OverloadedStrings, it's free to be
| any t such that IsString t. (But it's expected to have a monomorphic
| type, not the polymorphic "foo" :: forall t. IsString t => t)
|
| Hence the second error below - GHC tries to pick a type that is both
| Foldable and IsString, but that's not a unique combination.
|
| >> GHC 7.10 fails with the following errors (whereas 7.8 compiles
| >> without
| >> complaining):
| >>
| >>
| >> ghc --make "Testcase.hs"
| >> [1 of 1] Compiling Main ( Testcase.hs, Testcase.o )
| >> Testcase.hs:7:31:
| >> No instance for (Foldable t0) arising from a use of ‘elem’
| >> The type variable ‘t0’ is ambiguous
| >> (...)
| >>
| >> Testcase.hs:8:15:
| >> No instance for (Data.String.IsString (t0 Char))
| >> arising from the literal ‘"$_-"’
| >> The type variable ‘t0’ is ambiguous
| >> (...)
|
| Question for GHC devs:
|
| How hard would it be to give a different error message instead of "No
| instance ..." when the type variable is ambiguous? I always find this
| error slightly misleading, since it seems to me that there are
| multiple valid instances, not that there is "no instance".
|
| bergey
More information about the ghc-devs
mailing list