Re: Determine instance method from class method callsite
My conclusion so far: there's no royal way. One can get the instance dictionary DFunId pretty easy, but then access to the Typechecked AST of the instance declaration is really needed to find all the method bindings $c... (that get applied when constructing the dictionary $d...).
Before inventing the wheel, want to check if there is a GHC API way to look up the (fully) resolved instance method from a class method.
For example, given a code
data Foo Int deriving Show
bar = show (Foo 3)
when inspecting the Typechecked AST for bar's show call, I would like to get to the Name / Id of 'show' of the 'Show' typeclass.
I believe I could use splitHsSigmaTy on the HsType of the function call to get the context, and then evaluate the HsWrapper somehow to find out what instance dictionary is applied to the class restriction in the context, and then look up the instance method from the dictionary..
1) Is there maybe functionality for this?
2) If not, is there any guarantee about the constraint order in the context, at the method call? So I could more easily determine which constraint's application to look for..