
Well, you are writing a function
reify :: CoreExpr -> HsExpr RdrName
It takes as its input a CoreExpr and produces as its output a reification of the input. I don't see why you need start by converting Core to HsExpr. Just write reify directly!
Simon
From: conal.elliott@gmail.com [mailto:conal.elliott@gmail.com] On Behalf Of Conal Elliott
Sent: 07 November 2013 01:08
To: Simon Peyton-Jones
Cc: Nicolas Frisby; ghc-devs@haskell.org
Subject: Re: Finding & assembling class dictionaries from GHC plugins?
Thanks for the suggestion. I hadn't considered backing up to an HsExpr. I guess we'd have to start by converting the Core Type to an HsType to form a type-annotated HsExpr. Am I on the right track here?
-- Conal
On Wed, Nov 6, 2013 at 5:59 AM, Simon Peyton-Jones
(:^) :: (Typeable a, Typeable b) => E (a -> b) -> E a -> E b
My reification plugin takes a Core application expression, recursively reifies the function and argument expressions, and makes an expression that applies (:^) to the two recursive results. However--and the point of this thread--I also need to come up with Core expressions for the two Typeable dictionaries.
So, to clarify my request, given a Core type representation t, I want to construct a Core expression that evaluates to the dictionary for Typeable t if one exists, or fail if there isn't one. Note that t is not necessarily an atomic type; it could instead be something like [(Bool,Int -> String)].
I'm happy to Skype-chat if it'd help.
Thanks, - Conal
On Tue, Nov 5, 2013 at 2:37 PM, Simon Peyton-Jones
A core-level plug-in can't generate fresh instances. There are some new plug-in hooks that fit earlier in the pipeline, which can. Maybe you can use that, and generate a data type decl with "deriving Typeable"?
We're willing to do some awkward shoehorning in HERMIT to make this work in limited circumstances. (Hopefully including Conal's.) We just don't know how to start - ie how call the right functions from the type checker. Are there any resources explaining the relevant subset of the TcRnIf API? Thanks.
From: ghc-devs [mailto:ghc-devs-bounces@haskell.orgmailto:ghc-devs-bounces@haskell.org] On Behalf Of Conal Elliott Sent: 04 November 2013 20:08 To: ghc-devs@haskell.orgmailto:ghc-devs@haskell.org Subject: Finding & assembling class dictionaries from GHC plugins?
I'm working on a GHC plugin (for compiling Haskell to hardware), and I need to synthesize Typeable (and maybe other) class dictionaries for a wide range of types, including composite types (functions, pairs, lists, etc). Can it be done, and how? I think I'm mainly looking for mechanics of finding existing class instances (however they're defined) and assembling them (for parametrized/composite dictionaries), rather than mechanisms specific to Typeable.
Thanks, -- Conal
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.orgmailto:ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs