[GHC] #14273: Typed holes' "valid substitutions" suggestions are oblivious to type class constraints
GHC
ghc-devs at haskell.org
Mon Sep 25 21:29:27 UTC 2017
#14273: Typed holes' "valid substitutions" suggestions are oblivious to type class
constraints
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner: Tritlo
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler (Type | Version: 8.3
checker) |
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Poor/confusing | Unknown/Multiple
error message | Test Case:
Blocked By: | Blocking:
Related Tickets: #9091 | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by Tritlo):
And the plot thickens:
if I add a module declaration, I get an additional error message, i.e.,
when the code is the following:
{{{
module TestShow where
pleaseShow :: Show a => Bool -> a -> Maybe String
pleaseShow False _ = Nothing
pleaseShow True a = Just (show _a)
}}}
I get the same error as before, but now with an additional message before
the typed hole error message:
{{{
t4.hs:5:28: error:
• Could not deduce (Show a0) arising from a use of ‘show’
from the context: Show a
bound by the type signature for:
pleaseShow :: forall a. Show a => Bool -> a -> Maybe
String
at t4.hs:3:1-49
The type variable ‘a0’ is ambiguous
These potential instances exist:
instance (Show b, Show a) => Show (Either a b)
-- Defined in ‘Data.Either’
instance Show Ordering -- Defined in ‘GHC.Show’
instance Show Integer -- Defined in ‘GHC.Show’
...plus 23 others
...plus 54 instances involving out-of-scope types
(use -fprint-potential-instances to see them all)
• In the first argument of ‘Just’, namely ‘(show _a)’
In the expression: Just (show _a)
In an equation for ‘pleaseShow’: pleaseShow True a = Just (show _a)
|
5 | pleaseShow True a = Just (show _a)
| ^^^^^^^
}}}
Which does tell you the constraint on the hole (if you connect the
ambiguous type variable names yourself). I suspect I'll have to invoke the
same mechanism, and then add the constraints derived with that mechanism
and wrap the type with that as well.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14273#comment:9>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list