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

Ben Franksen ben.franksen at online.de
Sun Jun 7 15:42:57 UTC 2020


> 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



More information about the Haskell-Cafe mailing list