This all seems fairly straight-forward, but I got stuck on the actual implementation, in particular:
what `EvTerm` should I use when discharging a `Typeable` constraint?
I can create a an `HsSyn` value for the required method (i.e., a function of type `Proxy# t -> TypeRep`).
I can also cast this into a `Typeable` dictionary value.
The issue is that I am left with an `HsSyn` expression, and not an `EvTerm`.
So is there a way to treat an arbitrary expression as an `EvTerm`?
In the implementation of the type-lits, I just added custom evidence, but this does not scale well (also, in that case the evidence is just a simple value, while here
it is a bit more complex).
Suggestions would be most appreciated!