
#12923: MultiParamTypeClasses + ExtendedDefaultRules -------------------------------------+------------------------------------- Reporter: amindfv | Owner: Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by amindfv): For my needs, given the rule linked above: "All of the classes Ci are single-parameter type classes." I would relax it to say: "Only one parameter in each class Ci has kind `:: *` " so this would be a valid program... {{{#!hs class Works a (b :: Bool) where works :: a -> A b instance Works Double 'True main = print (works 5 :: A 'True) }}} ...but this would remain ambiguous: {{{#!hs class Doesnt a b where doesnt :: a -> b instance Doesnt Double Bool main = print $ doesnt 5 True }}} The defaulting rule could be relaxed more, but this seems like the smallest possible change. Additionally, this change is critical for my EDSL's coherence; a more-relaxed rule would just be nice-to-have. Thank you! -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12923#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler