Re: [Haskell-cafe] Looking for a paper [Dijkstra-Dot]

On 6/5/20 7:05 AM, Anthony Clayden wrote:
* Also it doesn't seem to know Haskellers very well; nor Dijkstra's *>>* well-known support for Haskell in education. *>> >>* There's other bits and pieces of 'Publications' on that the-magus site; *>>* including spoofs of Dijkstra which can't even spell his first name *>>* right. I rather suspect the ewd.pdf is a spoof that didn't turn out very *>>* funny. So altogether it's a couple of dudes shooting the breeze.
... *
These all seem pretty irrelevant to the point being made, which I think has merit.
(See my prev post about its lack of merit.) No Haskeller I've ever come across would accuse Dijkstra of "stick[ing] to the antiquated imperative paradigm". Dijkstra advocated teaching Haskell as an antidote to imperativism. EWD1300 is advocating for his own 'notational conventions', chiefly for writing math and formalising proofs. I don't see anything very specific to programming languages; certainly nothing specific to any paradigm. The pdf (words imputed to 'Haskeller') doesn't understand 'first-class': The term dates back to Strachey 1967; it's to do with semantics of names; what in a FP context we'd call 'referential transparency'. It has nothing to do with syntax. Column 2 of page 1 is bogus. Even if 'Haskeller' didn't know that CompSci archaeology, they'd certainly know the ($) operator. Whether or not it's the most important operator, there _is_ an operator and it is first-class. 'Haskeller' gets several answers wrong at the top of p2; finally gets to $ and gets that wrong too: EWD's question re `length $ [] = 0` is not a way to define `length`. Any Haskell beginner could stick that into an actual Haskell compiler and see why. Towards the bottom of p2 EWD admits "I do not know your Haskell very well ...". I'd say this faux-Haskeller knows Haskell less well than faux-EWD. Just before that admission is another piece of bogus notation for operator sections of `x * y`. None of that appears in EWD1300.
This is all just a language design curiosity to me, though, and I'm not looking to start a new religious war until some of the present ones are resolved.
Well, don't look for pointers to language design from the couple of jokers portrayed in that pdf. I find it actually insulting to the good sense the real Dijkstra always showed; and insulting to Haskellers -- what's with all this gratuitous imputing of emotion? What's with just getting Haskell wrong? It's easy to check those claims; it's easy to get the (alleged) 'thought' peer-reviewed from the Haskell community. AntC

Well, don't look for pointers to language design from the couple of jokers portrayed in that pdf.
I find it actually insulting to the good sense the real Dijkstra always showed; and insulting to Haskellers -- what's with all this gratuitous imputing of emotion? What's with just getting Haskell wrong? It's easy to check those claims; it's easy to get the (alleged) 'thought' peer-reviewed from the Haskell community.
Who is insulting and emotional here? I really don't get why you're so upset about this harmless opinionated piece that, in a humorous and obviously exaggerated way, applies some of Dijkstra's ideas about programming language syntax to Haskell ("notational conventions" is just an informal synonym for syntax.) Putting these words into Dijkstra's mouth is just an artist's freedom, and in fact it gave me pause to think about the issues raised. (That was along time ago, BTW). Despite your endless ranting the authors quite obviously do understand EWD1300. Their use of the word "first-class" may drive the rhetoric a bit over the top but that's pretty superficial IMO. The main point is that in a language like Haskell whitespace is overloaded: it can mean application or it can be a mere separator; which it is depends on the context. If Haskell /required/ the use of an explicit built-in infix operator for application then this context-dependency would disappear and white space would become only a separator. It is valid to argue that this would make the language esier to read. This has nothing to do with the fact that in Haskell you onbviously /can/ define infix application operator. (The argument about the type of application is bogus, though, I agree with you on that one.) I also don't see how this has anything to do with Dijkstra promoting Haskell for teaching. In fact, I find it much less insulting to suggest that Dijkstra would have things to criticise about Haskell (he /was/ very much a perfectionist and if I can enumerate several shortcomings in Haskell off the top of my head, then so I guess he could have), than to suggest that this would be a reason for him to oppose using Haskell for teaching! I would venture that Dijkstra was realist enough to prefer something imperfect when it clearly trumps the competition. That said, he did write in one of his EWDs that beginners(!) should be tought programming with a language that does /not/ have an implementation available, in order to enourage thinking denotationally about programs rather than operationally, right from the start. The reason he preferred an imperative language for such a beginner's course (and also for communicating algorithms) is that recursion has a more complicated semantics (in terms of weakest preconditions) than his 'do' loop construct. This is important if, like Dijkstra did, you introduce every language construct by formally stating its denotational semantics, playing down the operational aspect as much as possible. Cheers Ben

On Sun, Jun 7, 2020 at 5:44 PM Ben Franksen
That said, he did write in one of his EWDs that beginners(!) should be tought programming with a language that does /not/ have an implementation available, in order to enourage thinking denotationally about programs rather than operationally, right from the start. The reason he preferred an imperative language for such a beginner's course (and also for communicating algorithms) is that recursion has a more complicated semantics (in terms of weakest preconditions) than his 'do' loop construct. This is important if, like Dijkstra did, you introduce every language construct by formally stating its denotational semantics, playing down the operational aspect as much as possible.
As a fun anecdote, Dijkstra's language referred to here, the Guarded Command Language, has actually seen several implementations despite his explicit intent for implementations never to exist: https://metacpan.org/pod/Commands::Guarded https://web.archive.org/web/20091214010836/http://www.dc.fi.udc.es/ai/~cabal... https://web.archive.org/web/20080622163307/http://gacela.labf.usb.ve/GacelaW... The last one there was actually used in the university I went to as the language for the first programming course for incoming CS students for the better part of a decade, until the department switched those courses to Python. Of note, also, is that 12 years passed from EWD1036 to his letter on using Haskell to teach introductory programming. I wonder if he ever wrote or shared his thoughts on whether this was merely a pragmatist's compromise, or a change of heart in light of Haskell's progress over those years: why did he not stick to GCL?

Rather than denotationally, I'd emphasise the axiomatic foundations of GCL
in terms of wp.
Whilst EWD had plenty to say about programming languages his over
arching concern was programming methodology and the implementation
of correct programs wrt a specification.
It is not just a matter of simpler semantics. In EWD798 Dijkstra writes
that (at the event) he gave a correctness proof that went against the
assumption that applicative programs are easier to prove correct than
imperative ones. I believe he repeats that comment elsewhere though I
can't find a reference. (I was curious to find what the algorithm was that
he presented. I tried emailing a few people whom I thought might have been
at the meeting,
unfortunately no one had notes or could recall. The event was "Advanced
Course on Functional Programming and its Applications" 1981.Whilst I
believe on the basis of the EWD'staDijkstra thought highly of FP in
that it supported the style of calculational proof/development that he
advocated, I don't believe that he saw FP as a 'silver bullet' or
necessarily the best option. And
his
support for Haskell must be seen in the context of a discussion on
alternatives for a programming course rather than advocacy per se.
Indeed he was careful to write:
inally, in the specific comparison of Haskell versus Java, "Haskell, though
not perfect, is of a quality that is several orders of magnitude higher
than Java, which is a mess"
[Dijkstra "*To the members of the Budget Council" 12 April 2001.*
Indeed
On Sun, Jun 7, 2020 at 5:27 PM Manuel Gómez
On Sun, Jun 7, 2020 at 5:44 PM Ben Franksen
wrote: That said, he did write in one of his EWDs that beginners(!) should be tought programming with a language that does /not/ have an implementation available, in order to enourage thinking denotationally about programs rather than operationally, right from the start. The reason he preferred an imperative language for such a beginner's course (and also for communicating algorithms) is that recursion has a more complicated semantics (in terms of weakest preconditions) than his 'do' loop construct. This is important if, like Dijkstra did, you introduce every language construct by formally stating its denotational semantics, playing down the operational aspect as much as possible.
As a fun anecdote, Dijkstra's language referred to here, the Guarded Command Language, has actually seen several implementations despite his explicit intent for implementations never to exist:
https://metacpan.org/pod/Commands::Guarded
https://web.archive.org/web/20091214010836/http://www.dc.fi.udc.es/ai/~cabal...
https://web.archive.org/web/20080622163307/http://gacela.labf.usb.ve/GacelaW...
The last one there was actually used in the university I went to as the language for the first programming course for incoming CS students for the better part of a decade, until the department switched those courses to Python.
Of note, also, is that 12 years passed from EWD1036 to his letter on using Haskell to teach introductory programming. I wonder if he ever wrote or shared his thoughts on whether this was merely a pragmatist's compromise, or a change of heart in light of Haskell's progress over those years: why did he not stick to GCL? _______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.
-- David Duke Professor of Computer Science School of Computing University of Leeds UK E:duke.j.david@gmail.com W:https://engineering.leeds.ac.uk/staff/334/Professor_David_Duke

Haskell's reputation as a welcoming community is on shakier ground than it was a few years ago, and phrases like "despite your endless ranting" work against the collegial atmosphere we're proud of.
No need to be faux polite, but when people (wrongly, in my opinion) describe us as an unwelcoming community, this is the type of convo I imagine them having come across and been scared off by.
Tom
El 7 jun 2020, a las 11:42, Ben Franksen
Well, don't look for pointers to language design from the couple of jokers portrayed in that pdf.
I find it actually insulting to the good sense the real Dijkstra always showed; and insulting to Haskellers -- what's with all this gratuitous imputing of emotion? What's with just getting Haskell wrong? It's easy to check those claims; it's easy to get the (alleged) 'thought' peer-reviewed from the Haskell community.
Who is insulting and emotional here?
I really don't get why you're so upset about this harmless opinionated piece that, in a humorous and obviously exaggerated way, applies some of Dijkstra's ideas about programming language syntax to Haskell ("notational conventions" is just an informal synonym for syntax.) Putting these words into Dijkstra's mouth is just an artist's freedom, and in fact it gave me pause to think about the issues raised. (That was along time ago, BTW).
Despite your endless ranting the authors quite obviously do understand EWD1300. Their use of the word "first-class" may drive the rhetoric a bit over the top but that's pretty superficial IMO. The main point is that in a language like Haskell whitespace is overloaded: it can mean application or it can be a mere separator; which it is depends on the context. If Haskell /required/ the use of an explicit built-in infix operator for application then this context-dependency would disappear and white space would become only a separator. It is valid to argue that this would make the language esier to read. This has nothing to do with the fact that in Haskell you onbviously /can/ define infix application operator. (The argument about the type of application is bogus, though, I agree with you on that one.)
I also don't see how this has anything to do with Dijkstra promoting Haskell for teaching. In fact, I find it much less insulting to suggest that Dijkstra would have things to criticise about Haskell (he /was/ very much a perfectionist and if I can enumerate several shortcomings in Haskell off the top of my head, then so I guess he could have), than to suggest that this would be a reason for him to oppose using Haskell for teaching! I would venture that Dijkstra was realist enough to prefer something imperfect when it clearly trumps the competition.
That said, he did write in one of his EWDs that beginners(!) should be tought programming with a language that does /not/ have an implementation available, in order to enourage thinking denotationally about programs rather than operationally, right from the start. The reason he preferred an imperative language for such a beginner's course (and also for communicating algorithms) is that recursion has a more complicated semantics (in terms of weakest preconditions) than his 'do' loop construct. This is important if, like Dijkstra did, you introduce every language construct by formally stating its denotational semantics, playing down the operational aspect as much as possible.
Cheers Ben
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.

Am 08.06.20 um 16:07 schrieb amindfv@gmail.com:
Haskell's reputation as a welcoming community is on shakier ground than it was a few years ago, and phrases like "despite your endless ranting" work against the collegial atmosphere we're proud of.
To put this in perspective, here are a few citations from what I have called "endless ranting":
... misapplying ... in a rather badly-informed way. ... it doesn't seem to know Haskellers very well; nor Dijkstra's well-known support for Haskell in education. ... can't even spell his first name right... ... it's a couple of dudes shooting the breeze. ...To put it bluntly: the authors are blundering. ... a bogus problem; direct consequence of the authors not understanding EWD1300.
Do you regard this as "welcoming" language? If not, where was your concerned reply when they hit the list? IMO the occasional ranting doesn't hurt anybody as long as it is addressed not to people but to technical shortcomings. However, the above citations are clearly ad-hominem attacks. Or is your point that I directly addressed the author of the above lines, rather than attacking some third party? Cheers Ben

Sincere apologies if my message came across as me, personally, criticizing you(r actions), personally. Enforced 100% politeness isn't actually good for a community, and I have no special claim to an objective viewpoint on which messages are hurtful vs. harmful. Plus, I'm sure emails I've sent on this list have failed the test I'm describing now. On the other hand, almost certainly most people subscribed to the mailing list haven't read every email on the list, and even a message that's "justified frustration" in context can seem like a community full of jerks to people who don't have that full context. People (real people I've spoken to offline) worry their questions will be attacked or ridiculed, and so don't ask them and stay disengaged. Not the problem of one email or one author. And I certainly don't want to have to implicitly endorse (or not) whatever messages came before. The existence of other (imo) rude messages on the list underscores my point, not detracts from it. We should all try to make this place be and seem friendly. Tom
El 8 jun 2020, a las 11:49, Ben Franksen
escribió: Am 08.06.20 um 16:07 schrieb amindfv@gmail.com: Haskell's reputation as a welcoming community is on shakier ground than it was a few years ago, and phrases like "despite your endless ranting" work against the collegial atmosphere we're proud of.
To put this in perspective, here are a few citations from what I have called "endless ranting":
... misapplying ... in a rather badly-informed way. ... it doesn't seem to know Haskellers very well; nor Dijkstra's well-known support for Haskell in education. ... can't even spell his first name right... ... it's a couple of dudes shooting the breeze. ...To put it bluntly: the authors are blundering. ... a bogus problem; direct consequence of the authors not understanding EWD1300.
Do you regard this as "welcoming" language? If not, where was your concerned reply when they hit the list?
IMO the occasional ranting doesn't hurt anybody as long as it is addressed not to people but to technical shortcomings. However, the above citations are clearly ad-hominem attacks.
Or is your point that I directly addressed the author of the above lines, rather than attacking some third party?
Cheers Ben
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.

Just to add a disintered observer perspective: Maybe gmane[0] is screwing with me, or somebody replied to a digest (or didn't include the right mail headers to allow threading) and that screws up all of the thread context. That makes it hard to tell "who started it". In general: I don't find responding to invective with more invective to be productive in any way. Either just call the person out directly in a meta-reply or don't respond at all -- except perhpas in a Gray Rock fashion. (Can't definitively say I haven't succumbed to baiting in the past, but I do try my best not to. Life is too short, honestly. "Strong opinions loosely held", and all that...) [0] It's back as gmane.io!
participants (6)
-
amindfv@gmail.com
-
Anthony Clayden
-
Bardur Arantsson
-
Ben Franksen
-
David Duke
-
Manuel Gómez