On Wed, 17 Sept 2025 at 08:03, Arnaud Spiwack <arnaud.spiwack@tweag.io> wrote:
If this is the forming consensus, I'm happy to go with it.

Ok with me too.

Cheers
Simon

 

I'm not super comfortable with having two different desugaring strategies for list literals. But I do agree that 1/ qualified lists are the more interesting of the bunch 2/ the proposed desugaring is a significant improvement on the one from OverloadedLists

On Thu, 11 Sept 2025 at 17:21, Sebastian Graf <sgraf1337@gmail.com> wrote:
My view mirrors Simon's precisely. 

Iavor's comment on QualifiedNumerics made me aware of the interaction of the special treatment for negative integers with -XNegativeLiterals, and I find the additional configuration dimension a much higher cost than the gain `fromNatural` offers. (Still on board with the analogous proposal to QualifiedDo.)

Am Mi., 10. Sept. 2025 um 10:25 Uhr schrieb Simon Peyton Jones <simon.peytonjones@gmail.com>:
My own view:
  • QualifiedStrings: yes [exactly analogous to QualifiedDo]
  • QualifiedNumerics: yes, but without the special treatment for negative integers [i.e. exactly analogous to QualifiedDo]
  • QualifiedLists: yes, with the new desugaring.  It is unfortunately non-orthogonal, but the prize is significant.
Simon

On Wed, 10 Sept 2025 at 00:02, Jakob Brünker <jakob.bruenker@gmail.com> wrote:
Hi all,

apologies for my silence on this; interestingly I was also moving (from Norway to Germany), but that is done now.

I left some review comments on the new proposals. Generally I like them, although I think it would have been a harder sell before QaulifiedDo set a precedent for qualified syntax.

I think QualifiedLists might actually be the one that provides the clearest win here - since it has the potential to make literals for any types that can't accommodate the fromList interface significantly more readable. The asymmetry to the existing overloaded design /is/ unfortunate though, and it also seems needlessly complex to have two features that solve essentially the same problem - ideally I'd want to keep only one long-term, i.e. deprecate OverloadedLists/Strings. But that doesn't seem realistic, so I don't think it should actually be a requirement for accepting the proposal.

The others seem like relatively minor conveniences to what's already possible (e.g. `T.p "foo"` and similar solutions), but since the cost is relatively low I think they are likely worth it. In particular, the ability to have positive number literals without needing to define an entire Num instance is I think something I've wanted at least a couple of times.

I am a little concerned about the ability to figure out what exactly is happening when reading the code, which was brought up in the original proposal thread, although I'm leaning towards saying it's still fine since you can at least always see which module it's from. This concern would be lessened if we knew that HLS will support 'jump to definition' for these literals, but I think that's probably something we shouldn't rely on for the decision.

Jakob

On Tue, Sep 9, 2025, 21:38 Matthías Páll Gissurarson <mpg@mpg.is> wrote:
Hey, sorry for the delay. I’ve been moving and been up to my ears in boxes, packing and unpacking.

I like the proposal. I’m in favor of qualified syntax in general (that’s where QualfiedDo came from!), and I think it’s a good way for library maintainers to provide sane defaults for various use cases. 

QualifiedStrings is a clear win, something I would most certainly use myself. QualifiedNumerics I’m more ambivalent about, I haven’t written enough numeric code to have a good feel for how clunky it would be in practice, especially the special handling of negatives.

QualifiedLists, especially the vector example, is compelling, something that would make it much easier to work with list-like literals. I have a use-case in our own internal codebase already, to make it easier to work with N-ary products.

The only downside I see is the introduction of even more language extensions, but these I imagine would end up in a language edition eventually. I do think that people would pick up on the syntax quickly (I imagine QualifiedStrings to become ubiquitous), so i’m not too worried about the cognitive overhead. In fact I think making it explicit which module is influencing the interpretation is clearer than the current Overloaded approach.

There is a risk that library authors could abuse this to write “non-sane” code, and cause syntax fragmentation. It would indeed be great if we had a staging environment. Worth keeping an eye on, but not fatal.

So to summarize:

QualifiedStrings: most definitely
QualifiedNumerics: ambivalent, haven’t worked with numeric code enough to have a good intuition
QualifiedLists: I like this, and I think the pain is worth it

On Tue, Sep 9, 2025 at 13:41 Malte Ott <malte.ott@maralorn.de> wrote:
I have perused the three proposal some more and I have to say they have grown on me.
I think they all have merit and I can imagine genuinly using them myself.

I agree that having to implement "fromNumeric" instead of "fromInteger" would
be surprising for someone who is a) familiar with the normal desugaring b)
tries to guess the semantics of the extension.

Still I am not convinced by "lets do it the old way just to preserve symmetry."
I think the new desugaring will be very easy to grasp to anyone who wants to
write a module which can be used for that. Users won’t even need to know the difference.

So I am in favor of all proposals. I don’t care much whether they are split or
not, although judging every proposal on its own merits surprisingly pushed me
over the edge.

Best,
Malte

On 2025-09-09 18:45, Moritz Angermann wrote:
>    Dear Simon,
>
>    I did comment on it[1], I also agree with Malte that this proposal
>    could indeed use more guidance from us.
>
>    Fundamentally I like all (now) three proposals. I find it a bit
>    challenging to see the full picture, especially
>    around the ergonomics of these, without actually using them for a while
>    actually trying to solve problems.
>
>    I wish we had a staging/preview area where we could permit such
>    proposals to be given a trial run for a
>    limited time to collect feedback from actually using them.
>
>    As I've mentioned in the comment, I do think Bodigrim has a point with
>    his concern about towering
>    abstraction.  What might be helpful to some in _some_ domain, might not
>    be helpful to me in a different
>    domain.  We have lots of language extensions already to cater to
>    specific domains, and sometimes it's
>    best to use as few extensions as possible, writing very straight
>    forward code, which is also easy to read
>    for others.  In other scenarios skilled application of language
>    extensions allows the author to model the
>    problem much clearer. However, do I want this always enabled? Most
>    likely not.
>
>    My primary concern is always: will this break existing code, as a
>    language extension behind a language
>    pragma gate, I'm not very concerned about this.
>
>    My secondary concern is that as mentioned above, we build locally
>    optimised languages for sub problems.
>    I don't think this is necessarily wrong, ghc haskell has this already
>    in its dna, but for newcomers this
>    can be confusing. They don't deal with one, but multiple languages
>    concurrently.
>
>    I personally find most of the ceremonies needed around strings,
>    numbers, (and lists) quite unsatisfactory,
>    hence these proposals do appeal to me. Then again my reservation are
>    mostly around the increasing
>    complexity of the sublanguages, and uncertainty if I would actually end
>    up using them down the line?
>
>    I wish I could just have them at my disposal for a while to try out and
>    experiment with, knowing full well
>    that they might change, or be removed, to get a better feeling for how
>    well they actually help with
>    coding problems I have at hand, and if the ergonomics work out for me
>    or not.
>
>    This ended up being a lot longer than I intended it to be, oh well...
>
>    Best,
>     Moritz
>
>    --
>    [1]: [1]https://github.com/ghc-proposals/ghc-proposals/pull/698#issueco
>    mment-3125147164
>
>    On Tue, 9 Sept 2025 at 18:09, Malte Ott <[2]malte.ott@maralorn.de>
>    wrote:
>
>      Dear Simon,
>
>      just for the record at least Simon and I had voiced our opinion on
>      the mailinglist. (Assuming no mail got lost.)
>      Especially Simons critical comment seems to me to be a driver of the
>      ongoing split.
>
>      That being said, you are right this proposal is tricky and we all
>      should contribute to guiding the author forward.
>
>      Best,
>      Malte
>
>      On 2025-09-09 09:58, Simon Peyton Jones wrote:
>      >    Dear Simon, Jakob, Malte, Moritz, Matthias
>      >
>      >    As you will know, there has been quite a bit of discussion
>      around the
>      >    GHC proposal for Qualified Literals. But (unless I have missed
>      your
>      >    contributions) you have not yet contributed to the discussion.
>      As a
>      >    member of the GHC Steering Committee, especially when there are
>      tricky
>      >    judgement calls to make (as in this case) I would really
>      appreciate
>      >    your input.
>      >      * [1]Discussion
>      >      * [2]Proposal
>      >
>      >    Brandon has now split his proposal into three.  I have outlined
>      >    [3]options in this comment.
>      >
>      >    I feel that we owe the proposer some guidance on the way
>      forward, and
>      >    we can only do that if we all pay attention, rather than
>      leaving it to
>      >    Sebastian.   (Thanks Sebastian!)
>      >
>      >    thank you!
>      >
>      >    Simon
>      >
>      > References
>      >
>      >    1. [3]https://github.com/ghc-proposals/ghc-proposals/pull/698
>      >    2.
>      [4]https://github.com/brandonchinn178/ghc-proposals/blob/qualified-s
>      trings/proposals/0723-qualified-strings.rst
>      >    3.
>      [5]https://github.com/ghc-proposals/ghc-proposals/pull/698#issuecomm
>      ent-3269584289
>      _______________________________________________
>      ghc-steering-committee mailing list --
>      [6]ghc-steering-committee@haskell.org
>      To unsubscribe send an email to
>      [7]ghc-steering-committee-leave@haskell.org
>
> References
>
>    1. https://github.com/ghc-proposals/ghc-proposals/pull/698#issuecomment-3125147164
>    2. mailto:malte.ott@maralorn.de
>    3. https://github.com/ghc-proposals/ghc-proposals/pull/698
>    4. https://github.com/brandonchinn178/ghc-proposals/blob/qualified-strings/proposals/0723-qualified-strings.rst
>    5. https://github.com/ghc-proposals/ghc-proposals/pull/698#issuecomment-3269584289
>    6. mailto:ghc-steering-committee@haskell.org
>    7. mailto:ghc-steering-committee-leave@haskell.org
_______________________________________________
ghc-steering-committee mailing list -- ghc-steering-committee@haskell.org
To unsubscribe send an email to ghc-steering-committee-leave@haskell.org
_______________________________________________
ghc-steering-committee mailing list -- ghc-steering-committee@haskell.org
To unsubscribe send an email to ghc-steering-committee-leave@haskell.org
_______________________________________________
ghc-steering-committee mailing list -- ghc-steering-committee@haskell.org
To unsubscribe send an email to ghc-steering-committee-leave@haskell.org
_______________________________________________
ghc-steering-committee mailing list -- ghc-steering-committee@haskell.org
To unsubscribe send an email to ghc-steering-committee-leave@haskell.org
_______________________________________________
ghc-steering-committee mailing list -- ghc-steering-committee@haskell.org
To unsubscribe send an email to ghc-steering-committee-leave@haskell.org


--
Arnaud Spiwack
Director, Research at https://moduscreate.com and https://tweag.io.
_______________________________________________
ghc-steering-committee mailing list -- ghc-steering-committee@haskell.org
To unsubscribe send an email to ghc-steering-committee-leave@haskell.org