I wish dang would remove the flag function or modify it in some way. I understand it's there to stop spam, flamewars, etc but it can be abused and kill any chance of a decent debate.
The issue is the expected value of the thread [1]. Decent debate is great but requires a more substantive starting point than usenet/mailing-list flamebait.
The OP is fine in its original context of an OpenBSD mailing list—that's a focused-enough system to respond coherently. A large, weakly cohesive forum like HN is more like all the mailing lists put together in a blender. Posting the same message to this context amplifies the provocation by 1000x, if not 100000x, and the thread will fill up with comments by the self-selected most-provoked on all sides. This leads to boring, shallow comments, an effect which compounds as more comments appear. This is a failure mode for HN.
We've learned over the years that threads are sensitive to initial conditions: the same forum can respond either substantively or with meltdowns on the same topic, depending on small perturbations. If the goal is high-quality discussion (or, let's be reasonable, as quality as possible under the circumstances), the place to focus on is the starting conditions.
When a provocative post like this gets flagged sufficiently to remove the thread from circulation, the flags are usually coming from a coalition of users: one set who dislike/disagree with the author, and one set who recognize the thread as a failure mode for HN. That goes for all provocative topics, not just programming ones.
[1] I've written a lot about this in terms of comments—i.e. a comment's quality is the expected value of the subthread that it is the root of—but as in many things, you can treat a submission as a kind of root comment and the argument works the same way: https://hn.algolia.com/?dateRange=all&page=0&prefix=true&sor...
Haskell is a lazy language, which has its consequences. In this post I'll demonstrate just how easy it is to shoot yourself in the foot with laziness using the classic example of computing Fibonacci numbers, which very ironically virtually all relevant Haskell documentation gets wrong, given that it's the primary use case for Haskell.