Note [Type determines value]
Only specialise on non-impicit-parameter predicates, because these are the ones whose *type* determines their *value*. In particular, with implicit params, the type args *don't* say what the value of the implicit param is! See #7101. So we treat implicit params just like ordinary arguments for the purposes of specialisation. Note that we still want to specialise functions with implicit params if they have *other* dicts which are class params; see #17930. It's also not always possible to infer that a type determines the value if type families are in play. See #19747 for one such example.
References 0
This Note does not link to any other.
Referenced by 2
- Types for coercions, predicates, and evidence GHC.Core.Predicate
- GHC.Core.Predicate call site