<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">For sure, the proposed tools are not in themselves likely to provide an immediate problem — for a while I was marginally in favour of the proposal. The contentious issue concerns the style the tools are clearly intended to police.<div class=""><br class=""></div><div class="">If everyone agrees that use of puns is a matter of style and we are not in the business of policing style, nor trying to eliminate puns from the language, then that is fine by me — it certainly is the safest course of action and doesn’t require any shifts of long established patterns and habits.</div><div class=""><br class=""></div><div class="">My original recommendation was to simply make it clear in the notes that there was no attempt establish a preferred style but that clarification was opposed on the grounds that some saw this as part of a general move against puns.</div><div class=""><br class=""></div><div class=""><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);" class="">I remain against the proposal because it seems to be generating a lot of confusion on this point. </span></div><div class=""><br class=""></div><div class="">Chris</div><div class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 3 Sep 2022, at 19:46, Simon Peyton Jones <<a href="mailto:simon.peytonjones@gmail.com" class="">simon.peytonjones@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_default" style="font-family:tahoma,sans-serif">
Believe me, these are serious Haskellers. And they do not appreciate 
being contemptuously treated like pawns by various Haskell technical 
committees that unilaterally decide the future of Haskell and impose it 
on them after the fact, especially where significant disruption is 
involved.

</div></blockquote><div class=""><br class=""></div><div style="font-family:tahoma,sans-serif" class="gmail_default">I don't think this is as big a deal as everyone is making out.  <br class=""></div><div style="font-family:tahoma,sans-serif" class="gmail_default"><br class=""></div><div style="font-family:tahoma,sans-serif" class="gmail_default">All this proposal does is <br class=""></div><div style="font-family:tahoma,sans-serif" class="gmail_default"><ul class=""><li class="">Add a new, more selective import, so you can import just the type or just the value, namespace.</li><li class="">Add a couple of warnings</li></ul><div class="">That does not seem to treat anyone with contempt, does it?</div><div class=""><br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="">
Instead, I recommend stating that GHC will be following a course 
increasing support for pun-free code, and not putting effort into 
improving (only) punned code <br class=""></div></blockquote><div class=""><br class=""></div><div class="">I worry that making an explicit statement like this would simultaneously (a) have little practical effect on our future decisions, but (b) risk making a constituency feel aggrieved in the way that Chris suggests.  That would be a bad outcome: irritated consumers but little payoff!  I don't see a need to make an explicit decision of this kind.  (I didn't find Richard's for-instance compelling.)  Let's jump this bridge when we come to it.</div><div class=""><br class=""></div><div class="">That has the merit (in terms of time and effort) that we don't have to "establish a consensus".  I'm unclear what precisely is the issue about which consensus is advocated, but I think it's to do with programming style.  Richard says "And thus we should steer".   But I'm not sure that we should, at least on programming style.  Haskell has some very clear (and entirely un-controversial) unifying principles: purity, and static typing.  But, in contrast, it does <i class="">not </i>have a very clear stance on programming style.  We have guards, let and where, case, \case and \cases, sections, comprehensions etc etc.  That allows different programming styles, and I don't feel a need to steer towards, let alone impose, a "blessed" style.  Let's just accomodate a diversity of opinion.  <br class=""></div><div class=""><br class=""></div><div class="">Simon<br class=""></div></div><div style="font-family:tahoma,sans-serif" class="gmail_default"></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, 3 Sept 2022 at 00:30, Chris Dornan <<a href="mailto:chris@chrisdornan.com" class="">chris@chrisdornan.com</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;" class="">To be clear, if we could go back 35 years and explain to the first Haskell language committee the value of outlawing puns I would be in favour of doing this. If we were in a situation where the community were aware of the problems and there was a broad consensus on the desirability of moving away from puns and on the chosen path then I would be in favour of setting our policy and providing the tools to help that evolution — like the ones described by this very proposal.<div class=""><br class=""></div><div class="">But we are not in this situation. Normally GHC is in a strong position to lead Haskell in new directions — we are careful to propose non-disruptive evolution that folks can opt into and trial. In this way the community can try things out and build a consensus on what is useful or not. This is why I am an enthusiastic proponent of our language extensions and this very proposal process. In my view it is the engine that has not just driven Haskell but arguably wider evolution of practical programming languages. The problem is that what we are proposing to do here is extremely disruptive, made significantly worse by the increased dependence of modern Haskell on newtypes. I can readily accept that everyone involved in this list has long viewed puns as an unfortunate Haskell mistake, bad style and long given up the practice of using them, if they ever did. But this represents a very particular subset of the Haskell community with a distinct set of concerns to the wider community. Many of those are serious users of Haskell in their work and others (with strong overlap) with immense commitment to developing and maintaining packages that are the life blood of the ecosystem (GHC being the heart in this metaphor).</div><div class=""><br class=""></div><div class="">Believe me, these are serious Haskellers. And they do not appreciate being contemptuously treated like pawns by various Haskell technical committees that unilaterally decide the future of Haskell and impose it on them after the fact, especially where significant disruption is involved. Handled wrongly it would be really easy to see significant pushback developing in the community along the lines we saw with the PVP, and before we know it we will find ourselves in another decade of a debilitating tech culture war.</div><div class=""><br class=""></div><div class="">(This is all expressed in stark terms, but I am following the precautionary principle — I do believe the risks to be significant but this kind of thing is difficult to predict.)</div><div class=""><br class=""></div><div class="">If I could be sure that we were living in Richard’s world I would be entirely happy to follow the plan he is advocating. My concern is simply that without extreme care its subtly will be quickly lost and we will see polarisation. This is not a technical problem so much as a social one that can only be safely navigated with skilful communication.</div><div class=""><br class=""></div><div class="">I would advocate that we advertise that we would like Haskell to evolve away from the puns of this proposal and make it clear that we accept that that is not where Haskell is and request feedback and help on how we can start building a roadmap to pun-free Haskell — assuming we can build the wider consensus that this is desirable (which hopefully we can, but we should try to avoid being presumptuous).</div><div class=""><br class=""></div><div class="">Until we can establish consensus on how this is going to all be communicated I remain in favour of keeping this proposal in stasis.</div><div class=""><br class=""></div><div class="">I would like to think I am merely unpacking Simon’s position...</div><div class=""> </div><div class="">Chris</div><div class=""> </div><div class=""><br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On 2 Sep 2022, at 17:53, Richard Eisenberg <<a href="mailto:lists@richarde.dev" target="_blank" class="">lists@richarde.dev</a>> wrote:</div><br class=""><div class=""><div style="overflow-wrap: break-word;" class="">I'm both in favor of accepting this proposal and in favor of setting a direction for GHC and the language it compiles.<div class=""><br class=""></div><div class="">I think the second is more contentious than the first, so I'll start there: We comprise the GHC Steering Committee. And thus we should steer! That is, we should make decisions that all work together in pursuit of a goal. We have not spent much time (and I do not propose doing it now) crisply defining that goal, but #378 and my more recent Principles document is an attempt to bring in that higher level structure to our decision-making process. I am thus comfortable with recommending, as a committee, that future code avoid puns.</div><div class=""><br class=""></div><div class="">However, that stops short of several steps we might take:</div><div class=""> - I do <i class="">not</i><span style="font-style:normal" class=""> recommend turning on -Wpuns or -Wpun-binds by default or in -Wall.</span></div><div class=""> - I do <i class="">not</i><span style="font-style:normal" class=""> recommend ever planning to remove support for punning code.</span></div><div class=""> - I do <i class="">not</i><span style="font-style:normal" class=""> recommend reaching out to developers telling them to update what they have written.</span></div><div class=""> - I do <i class="">not</i><span style="font-style:normal" class=""> recommend ever calling punning code "old fashioned" or other derogatory descriptions.</span></div><div class=""><br class=""></div><div class="">Instead, I recommend stating that GHC will be following a course increasing support for pun-free code, and not putting effort into improving (only) punned code. For example, perhaps someone will write a proposal introducing a new syntax `newtype Age <- Int`, which would automatically use the type name as the constructor name. In a world with puns, this syntax might have some advantages. However, given our course away from puns, we would likely quickly reject such a proposal, as out-of-keeping with our overall direction. (Note: "likely". If a new proposal came along that offered great benefits but only with puns, then maybe we would still accept!)</div><div class=""><br class=""></div><div class="">In keeping with this general direction, some developers may choose to avoid puns. That is their choice, not forced on them by us, but made with the knowledge of where we are heading. Other developers will continue to use puns, and that's fine, too.</div><div class=""><br class=""></div><div class="">Back to this specific proposal: Given that we accepted #378 -- and I still support the decision to do so -- I think we should accept #270, as well.</div><div class=""><br class=""></div><div class="">Richard</div><div class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Aug 24, 2022, at 7:46 AM, Chris Dornan <<a href="mailto:chris@chrisdornan.com" target="_blank" class="">chris@chrisdornan.com</a>> wrote:</div><br class=""><div class=""><div class="">I don’t think we should be in the business of overturning by fiat significant conventions that have been long established.<br class=""><br class="">I am really quite concerned about people pointing to proposals accepted by a technical committee and expanding this into wide-ranging normative conventions to be imposed on the general Haskell community after the fact.<br class=""><br class="">Accordingly I am flipping my recommendation. I now agree with Simon. Until we are satisfied that the wider consensus has been established — that these puns are no longer good style — I think we should *not* accept this proposal. The risks are too great and, as Simon points out, the potential benefits are not compelling.<br class=""><br class="">Chris<br class=""><br class=""><br class=""><blockquote type="cite" class="">On 2022-08-24, at 11:49, Joachim Breitner <<a href="mailto:mail@joachim-breitner.de" target="_blank" class="">mail@joachim-breitner.de</a>> wrote:<br class=""><br class="">Hi,<br class=""><br class="">thanks for the summary.<br class=""><br class="">Am Mittwoch, dem 24.08.2022 um 07:27 +0100 schrieb Chris Dornan:<br class=""><blockquote type="cite" class="">To (avoiding) this end, I suggest that we include wording in the<br class="">user guide section documenting this extension to the effect that<br class="">there is no consensus on the desirability or otherwise of the punful<br class="">code the extension seeks to address.<br class=""></blockquote><br class="">I wonder if it isn’t really on us to address that and try to establish<br class="">a consensus about where we want Haskell to evolve to? Should we not try<br class="">to provide unifying guidance by choosing between<br class=""><br class="">  puns are fine and good practice, the language evolution takes that into<br class="">  account<br class=""><br class="">and<br class=""><br class="">  puns are discouraged and undesirable, as they do not work smoothly with<br class="">  the Haskell we envision for the future,<br class="">  we provide work-arounds (like this proposal) when dealing with code<br class="">  that still has them<br class=""><br class="">It seems that by accepting<br class=""><a href="https://github.com/ghc-proposals/ghc-proposals/pull/378" target="_blank" class="">https://github.com/ghc-proposals/ghc-proposals/pull/378</a> we went down<br class="">the second road, although the wording in that proposal, in section<br class=""><a href="https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0378-dependent-type-design.rst#non-design-of-dependent-types" target="_blank" class="">https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0378-dependent-type-design.rst#non-design-of-dependent-types</a><br class="">is much more diplomatic than I was above.<br class=""><br class="">Maybe the sentiment could be that puns are a bit like lazy IO: It used<br class="">to be the thing to do so, it will continue to work, but they should no<br class="">longer be considered current good practice.<br class=""><br class="">Cheers,<br class="">Joachim<br class=""><br class=""><br class=""><br class="">-- <br class="">Joachim Breitner<br class=""> <a href="mailto:mail@joachim-breitner.de" target="_blank" class="">mail@joachim-breitner.de</a><br class=""> <a href="http://www.joachim-breitner.de/" target="_blank" class="">http://www.joachim-breitner.de/</a><br class=""><br class="">_______________________________________________<br class="">ghc-steering-committee mailing list<br class=""><a href="mailto:ghc-steering-committee@haskell.org" target="_blank" class="">ghc-steering-committee@haskell.org</a><br class=""><a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee" target="_blank" class="">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><br class=""></blockquote><br class="">_______________________________________________<br class="">ghc-steering-committee mailing list<br class=""><a href="mailto:ghc-steering-committee@haskell.org" target="_blank" class="">ghc-steering-committee@haskell.org</a><br class=""><a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee" target="_blank" class="">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><br class=""></div></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></div></div>_______________________________________________<br class="">
ghc-steering-committee mailing list<br class="">
<a href="mailto:ghc-steering-committee@haskell.org" target="_blank" class="">ghc-steering-committee@haskell.org</a><br class="">
<a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee" rel="noreferrer" target="_blank" class="">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><br class="">
</blockquote></div>
</div></blockquote></div><br class=""></div></body></html>