Indeed, tyConDataCons does the trick. I don't know how to start with the
Class (given a name string), but I'm able to use 'mkClsOcc . Unqual' with
lookupRdrNameInModuleForPlugins and then lookupTyCon on the resulting name,
followed by 'head . tyConDataCons' to get the constructor.

Thanks, Simon!

-- Conal

On Wed, Mar 23, 2016 at 1:32 AM, Simon Peyton Jones <[email protected]>
wrote:

> Start with the Class.  Use classTyCon to get the TyCon.  Use tyConDataCons
> to get the data constructor.
>
>
>
> Simon
>
>
>
> *From:* ghc-devs [mailto:[email protected]] *On Behalf Of *Conal
> Elliott
> *Sent:* 23 March 2016 00:09
> *To:* [email protected]
> *Subject:* lookupRdrNameInModuleForPlugins with constructors
>
>
>
> I'm trying to construct a dictionary in a GHC plugin. I'm stuck on finding
> the constructor for the dictionary. When I use `-ddump-simpl` on the module
> that defines the class, I see "Circat.Rep.C:HasRep". To try finding that
> constructor, I say
>
> > lookupRdrNameInModuleForPlugins hsc_env
> >   (mkModuleName "Circat.Rep") (mkVarUnqual "C:HasRep")
>
> However, I keep getting `Nothing` as a result. (Same without the "C:".)
> I've also had this same difficulty when looking up constructors for
> algebraic data types and when looking up TyCons. For regular value Ids,
> lookup succeeds.
>
> What am I missing?
>
> Thanks, - Conal
>
_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to