…and can cause so many more, as the designers of Rust discovered back when the the language had its own “two-letter keyword” :
A longer time ago (in 1996) the monadic interface was introduced to
Haskell, along with the more-convenient imperative-style syntax for
monadic expressions first implemented in Gofer two years earlier. The
specifier chosen for this alternate monadic syntax was a very small
and reasonable keyword: do.
But the monadic interface had an irritatingly-odious complexity bill
(e.g. requiring much formerly effect-free code to be manually rewritten
monadically) and still had people breaking the rule with unsafe
entities (often for I/O), which meant that the putative benefits like
“can do compile time evaluation” or “can spread on a GPU” weren’t there
anyways. And people couldn’t do simple things like “put a print in here
for logging” (which is possible in Standard ML).
So will everything eventually be marked do, thereby reducing it to
a noise word in Haskell? Or will this lesson of PL-design history be
heeded?
Hi, fourmolu maintainer here. Please ticket in Ormolu, not Fourmolu, because Fourmolu doesnt change anything here
Also, I’d advise against FOURMOLU_DISABLE here; I think the README specifies that it should only wrap top-level declarations. I don’t think it’ll work well inside a function.
But I agree that it’s a bug. Which is why I commented in that Ormolu issue. As to why: comments are printed automatically in Ormolu whenever a term with comments attached is printed. It works most of the time, but oddities can occur in certain contexts.