Hi all,
I'm writing some TH code that should generate property tests. For example, the expression:
$(generate [e| law "idempotent" (insert a (insert a b) == insert a b) |])should generate the code
property $ \a b -> insert a (insert a b) === insert a bI do this by looking for UnboundVarEs in the Exp returned by the [e| quote, and binding them in a lambda. All of this works.
However, now I'm trying to get the inferred types of `a` and `b` in the above. GHC clearly is typechecking the quote, since it will fail if I replace `b` with something nonsensical.
Is there some existent way to get the inferred type of an UnboundVarE --- ideally without reimplementing the typechecker?