question about GHC API on GHC plugin

Andrew Farmer afarmer at ittc.ku.edu
Mon Aug 17 23:21:16 UTC 2015


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 <mike at 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 <ezyang at 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 at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>


More information about the ghc-devs mailing list