I'm afraid I'm coming late to the game, so I'm not clear on the extent
of the problem (or even precisely what it is that isn't working).

In addition to creating a ticket, it would be great to have a wiki page
that outlines the problem and proposed solution(s).

The TH finalizer stuff was meant to make support for things like
language-c-inline easier, but it is incomplete. Before we go munging
around again, it would be good to have a list of use cases so we can
cover all the bases this time.

Geoff

On 04/13/2016 04:25 PM, Richard Eisenberg wrote:
> Very interesting.
>
> On Apr 13, 2016, at 5:09 AM, "Boespflug, Mathieu" <m...@tweag.io> wrote:
>> * Should we consider it a bug (and file a ticket) that reification in
>> typed splices is able to observe the order of type checking, just like
>> reify used to do in untyped splices?
> I think so, yes.
>
>> * While Richard's proposed addGroupFinalizer might not work with
>> untyped splices, perhaps it can be made to work with typed splices,
>> since these run in the type checker?
> I think so, yes. Perhaps it would be more well-typed to have typed TH splices 
> run in a new monad TQ such that TQ allows addGroupFinalizer but Q does not. 
> This may be overkill though.
>
>> * If part of the solution here is to use typed splices, how do we get
>> quasiquotation to be syntactic sugar for a *typed* splice? Do we want
>> to be introducing a typed quasiquotation syntax, just like Geoff did
>> for much of the rest of Template Haskell?
> Maybe. Quasiquotation sugar is very light: [blah|...|] is the same as 
> $(selector blah "...") where `selector` is the right record selector 
> depending on the splice context. Is it worth trying to expand quasiquotation 
> syntax to work with typed TH? I'm unconvinced it's worth the bother. Also, 
> note that doing [blah||...||] is not backward-compatible, because that looks 
> like an untyped quasiquote that begins and ends with a vertical bar. We could 
> get around this problem by using a new extension, but the waters are just 
> getting muddier, and for seemingly little benefit.
>
> Richard
>
>> Facundo and I think that something like Richard's addGroupFinalizer is
>> still interesting to have, because while reification during type
>> checking sounds dubious, reification /after/ the declaration group is
>> fully type checked is perfectly safe.
>>
>> Best,
>> --
>> Mathieu Boespflug
>> Founder at http://tweag.io.
>>
>>
>> On 13 April 2016 at 04:25, Richard Eisenberg <e...@cis.upenn.edu> wrote:
>>> On Apr 12, 2016, at 5:35 PM, Facundo Domínguez <facundo.doming...@tweag.io> 
>>> wrote:
>>>
>>>> Hello Richard,
>>>>
>>>>> TH will offer a new function `addGroupFinalizer :: Q () -> Q ()` that 
>>>>> runs its argument in the local typing environment available when 
>>>>> addGroupFinalizer is called.
>>>> When considering this approach, how could one capture the local typing
>>>> environment given that the untyped splices are run in the renamer
>>>> where no such environment is populated yet?
>>>>
>>> Ah. Excellent point. I hadn't quite thought it through. Not sure, off the 
>>> top of my head, how to get around this.
>>>
>>> Richard
>>>

_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to