69 | | The ~~equality superclass on the `Has` class is important for type inference. For example, if the constraint `Has (T c) "x" d` is encountered, the instance will not match initially (because `d` is not of the form `[c]`), but a derived equality constraint `d ~ GetResult (T c) "x"` will be generated. This computes to `d ~ [c]`, so the original constraint becomes `Has (T c) "x" [c]`, which means the instance will match~~. Moreover, the `GetResult` type family ensures that the third parameter is functionally dependent on the first two, which is needed to [#Troubleinparadise avoid ambiguity errors when composing overloaded fields]. |

| 69 | The bare type variable `b` in the instance head is important, so that we get an instance match from the first two parameters only, then the equality constraint `(b ~ [a])` improves `b`. For example, if the constraint `Has (T c) "x" d` is encountered during type inference, the instance will match and generate the constraints `(a ~ c, b ~ d, b ~ [a])`. Moreover, the `GetResult` type family ensures that the third parameter is functionally dependent on the first two, which is needed to [#Troubleinparadise avoid ambiguity errors when composing overloaded fields]. |