[ghc-steering-committee] #195 recommendation: accept

Richard Eisenberg rae at richarde.dev
Thu Nov 7 10:50:35 UTC 2019


Those answers are helpful, yes, but I would want them incorporated in the proposal. And does Matt agree with these answers?

Thanks for writing that up!

Richard

> On Nov 6, 2019, at 4:33 PM, Iavor Diatchki <iavor.diatchki at gmail.com> wrote:
> 
> Hello,
> 
> I thought my comment on GitHub answered Simon's questions, but Matt
> should indeed update the proposal to make it explicit.
> For the record here is how I think they should be answered:
> 
> * Is the data constructor Code visible to clients? Can they look
> inside the abstraction?
>   - I think we should have a way to convert from `Code a` of a type
> `Q (TExp a)`.   `fromCode :: Code a -> Q (TExp a)`
>   - I don't think it matters very much if this is done with a
> function like that or by exposing thew newtype constructor.
>   - My preference would be to keep `Code` abstract and have the function.
> 
> * unsafeQ lets you turn a Q (TExp a) into a Code a. But how can you
> get a Q (TExp a) in the first place?
>   - I would imagine that you'd mostly get it out of `Code` using `fromCode`.
>   - Another way would be to make it unsafely using the `TExp`
> constructor directly.
> 
> * Can you/should you be able to get a Q (TExp a) from a Code a?
>    - Yes: it allows splicing typed code in untyped contexts which seems useful.
> 
> * The text says unsafeQ is added in order to perform unsafe Q actions
> inside of Code. So I was expecting something like
>     unsafeAddQ :: Q () -> Code a -> Code a
>     unsafeAddQThen :: Q a -> (a -> Code b) -> Code b
> 
> These can be defined using `fromCode` and `unsafeQ`.  If you think
> they might be useful, we could probably add them to the TH modules.
>   unsafeAddQ q c = unsafeQ (q >> fromCode c)
>   unsafeAddQThen q k = unsafeQ (q >>= fromCode . k)
> 
> What do others think?   Richard, you also had some questions but I am
> not sure what they are, does this help?
> 
> -Iavor
> 
> On Wed, Nov 6, 2019 at 1:35 AM Simon Peyton Jones via
> ghc-steering-committee <ghc-steering-committee at haskell.org> wrote:
>> 
>> I'm rather curious of what made my email sound like I was suggesting immediate acceptance,
>> 
>> I just misinterpreted this: “This proposal seems well motivated. So, I'll count as an accept vote, when the details are eventually sorted out.”
>> 
>> I understood you to mean “Let’s accept the proposal, if enough people have an accept vote, and leave it to the authors to sort out the details later”.    But I obviously read too much into your words – apologies.
>> 
>> 
>> 
>> Simon
>> 
>> 
>> 
>> 
>> 
>> From: Spiwack, Arnaud <arnaud.spiwack at tweag.io>
>> Sent: 06 November 2019 09:31
>> To: Simon Peyton Jones <simonpj at microsoft.com>
>> Cc: Richard Eisenberg <rae at richarde.dev>; ghc-steering-committee <ghc-steering-committee at haskell.org>
>> Subject: Re: [ghc-steering-committee] #195 recommendation: accept
>> 
>> 
>> 
>> 
>> 
>> I don’t think we should formally accept proposals that are ill-specified, in the hope that they’ll subsequently be fixed up.  Pushing back to “please revise to address these points” is not a negative thing – it’s a positive thing, saying good proposal but let’s make it better.
>> 
>> For the record: I didn't imply otherwise (I was merely registering my acceptance provided details are filled out to the rest of the committee's satisfaction). I'm rather curious of what made my email sound like I was suggesting immediate acceptance, but I really don't want to derail this thread.
>> 
>> _______________________________________________
>> ghc-steering-committee mailing list
>> ghc-steering-committee at haskell.org
>> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
> _______________________________________________
> ghc-steering-committee mailing list
> ghc-steering-committee at haskell.org
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee



More information about the ghc-steering-committee mailing list