HERMIT has some code for building dictionaries for a given predicate type (by invoking the typechecker functions that do this):
https://github.com/ku-fpg/hermit/blob/master/src/HERMIT/Dictionary/GHC.hs#L223 The functions to run TcM computations inside CoreM are here: https://github.com/ku-fpg/hermit/blob/master/src/HERMIT/Monad.hs#L242 and https://github.com/ku-fpg/hermit/blob/master/src/HERMIT/GHC/Typechecker.hs#L47 Perhaps that will help get you started? I would like to push these interfaces back into the GHC API at some point, but just haven't done it yet. HTH Andrew On Mon, Aug 17, 2015 at 4:12 PM, Mike Izbicki <m...@izbicki.me> wrote: > I'm not sure how either of those two functions can help me. The > problem is that given an operator (e.g. `+`), I don't know the name of > the dictionary that needs to be passed in as the first argument to the > operator. I could probably hard code these names, but then the plugin > wouldn't be able to work with alternative preludes. > > On Fri, Aug 7, 2015 at 11:20 PM, Edward Z. Yang <ezy...@mit.edu> wrote: >> Hello Mike, >> >> Give importDecl from LoadIface a try, or maybe tcLookupGlobal if >> you're in TcM. >> >> Edward >> >> Excerpts from Mike Izbicki's message of 2015-08-07 15:40:30 -0700: >>> I'm trying to write a GHC plugin. The purpose of the plugin is to >>> provide Haskell bindings to Herbie. Herbie >>> (https://github.com/uwplse/herbie) is a program that takes a >>> mathematical statement as input, and gives you a numerically stable >>> formula to compute it as output. The plugin is supposed to automate >>> this process for Haskell programs. >>> >>> I can convert the core expressions into a format for Herbie just fine. >>> Where I'm having trouble is converting the output from Herbie back >>> into core. Given a string that represents a numeric operator (e.g. >>> "log" or "+"), I can get that converted into a Name that matches the >>> Name of the version of that operator in scope at the location. But in >>> order to create an Expr, I need to convert the Name into a Var. All >>> the functions that I can find for this (e.g. mkGlobalVar) also require >>> the type of the variable. But I can't find a way to figure out the >>> Type given a Name. How can I do this? > _______________________________________________ > ghc-devs mailing list > ghc-devs@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs > _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs