... | ... | @@ -106,7 +106,7 @@ Note that we don't change `Bind` as only the `BoxedRep Lifted` representation is |
|
|
|
|
|
</details>
|
|
|
|
|
|
### Alternative 2: Evidence is a coercion
|
|
|
### Alternative 2: cast to a fixed representation using a kind coercion
|
|
|
|
|
|
The evidence for a `FixedRuntimeRep rr` constraint is a (nominal) kind coercion whose LHS type is `rr` and whose RHS type is `rep` where `rep` is a tree of constructors and applications like `mkTyConApp intRepTyCon []` or `mkTyConApp tupleRepTyCon [mkTyConApp nilTyCon [runtimeRepTy]]`. No variables, type synonyms or type families, etc.
|
|
|
In other words, the evidence is a kind coercion between a potentially unknown `RuntimeRep` (e.g. `F Int` for some type family `F :: Type -> RuntimeRep`) and a definite `RuntimeRep` like `'IntRep`.
|
... | ... | |