[GHC] #12923: MultiParamTypeClasses + ExtendedDefaultRules
GHC
ghc-devs at haskell.org
Fri Feb 3 17:37:34 UTC 2017
#12923: MultiParamTypeClasses + ExtendedDefaultRules
-------------------------------------+-------------------------------------
Reporter: amindfv | Owner:
Type: feature request | Status: patch
Priority: normal | Milestone: 8.2.1
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): Phab:D2822
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
The proposed new defaulting rules in the patch are:
Find all the unsolved constraints. Then:
* Find those of form `(C t1 ... a ... tn)`, where `C` is a class, and `a`
is a type variable of kind `Type` or `(Type -> Type)`, and all the other
parameters of `C` have kinds other than `Type` or `Type -> Type`.
* Partition this set into groups that share a common type variable `a`.
* Now default `a` (to one of the types in the default list) if
* The type variable `a` appears in no other constraint outside that
group
* At least one of the classes `Ci` is an interactive class
("Interactive class" is defined [http://downloads.haskell.org/~ghc/master
/users-guide/ghci.html#type-defaulting-in-ghci here].)
This seems a bit complicated to me. What about this instead.
Find all the unsolved constraints. Then:
* Find those that have exactly one free type variable, and partition that
subset into groups that share a common type variable `a`.
* Now default `a` (to one of the types in the default list) if at least
one of the classes `Ci` is an interactive class
This is a bit more flexible, and a bit simpler to describe. The "just one
free type variable" part is meant to avoid having to look for
''combinations'' of defaulting types that will allow the constraint to be
solved.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12923#comment:12>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list