I don’t know if this article deserves a reply or is even interested in carrying on a conversation. My own point of data is that I’ve never witnessed a community as big-tented and inclusive as Haskell’s. Without fail, I’ve been met with kindness and smarts and (perhaps mistaken for arrogance) lots of enthusiasm, whether it’s at ICFP or CUFP or Compose Conference or Haskell meetups or Stack Overflow’s haskell tag or /r/haskell or here. I think there are bad actors in the community who fall into the trap of being shrill about OOP or impurity or anything perceived as unHaskell, but that sort of hotheadness is rare and hopefully not systematic. The leaders in the community definitely don’t subscribe to those ideas. Heck, certain C# and F# features started as research done by the Haskellers in Microsoft Research. (And yes some of the libraries do require a little high-altitude math, but there are always simpler alternatives.)
I recognize this. A similarly terrible article landed on r/haskell awhile back. I thought it was a one-off troll piece at the time, but it seems the author has been doing this for awhile.
And about 5-6 posts on storify that hammer in the same weird point.
This is basically like the tabloid version of tech blogging. There are plenty of actual criticisms one could make of Haskell and GHC, but this is just hyperbole and sensationalism.
It’s weird this guy used to be all anti-FP and now he’s arguing partially for OCaml. Yeah, OK.
What this guy gets seriously wrong is that he sees all languages through a lens of economics. This is wildly different from technologists, who often dabble in less-mainstream languages as a way to enhance their own understanding of computation. He also ignores the growing number of firms using Haskell professionally.
My own argument for Haskell: incredible community of smart, kind people who work hard and have a lot of professional experience. The “avoid success” mantra works well for selecting genuine technologists who aren’t swayed by startup crap. (Whether that will remain, I don’t know.)
Additionally the purity of the language makes it an excellent vehicle for learning FP and seriously disrupting your own mental models of what programming means. Specifically, purity means you cannot half-ass parts of your program that are too inconvenient to structure imperatively, you have to opt-in to those side effects. Haskell, for me, is a concentrated dose of FP conducive to study and learning.
I had a small moment of existential despair when I realized that writing Haskell felt like ‘just’ writing a bunch of proofs to satisfy the compiler, specifically for purposes of totality. Then I realized that same notion of totality was strangely soothing: it meant far less combing through docs trying to find mentions of what happens on edge cases.
Managing mutability explicitly provides a lot of value. Carmack is not exactly an academic with no real-world game programming experience. My sense is that even the mainstream OO world is pushing towards immutable-by-default.
The “how do we get to there from here” problem exists for any new language. Is the author claiming that OCaml has a better migration story, or a better C FFI, than Haskell? Because that’s not my impression. (OTOH, the fact that Scala has great Java interoperability is a big factor in why I’ve ended up using it so much more than Haskell).
Reasoning that you hear less about OCaml because it’s used for more useful projects is spurious. Haskell is more popular than OCaml in academia, sure. That doesn’t imply OCaml is more popular than Haskell in industry; that may be true, but I’d want to see more evidence. Particularly if you’re looking at finance (where many of the purer functional languages are more popular), there are systems providing millions or billions of dollars of real-world value that no-one outside that particular organization has heard about. Likewise arguing that more libraries = worse language is very dubious.
Parsec is a different model from flex/yacc-like parsing, but I found parsec style infinitely easier to work with than yacc style. Certainly it’s popular enough that people have found it worthwhile to write parsec-style parser libraries for other languages. Maybe you find yacc-style parsing easier to work with; in that case find a yacc-style parser library for Haskell (I’m sure there will be several). But there’s no general point here (or rather, if you’re arguing that yacc-style parsing is inherently superior and anyone who prefers parsec-style is an idiot, then I must vehemently disagree); parsec is not a low-quality library by any means, it’s just one with a particular model that you might be unused to.
I would bet that pandoc has more real-world users than MLDonkey does today, and probably than it did ever. As someone who actually used MLDonkey, it was a dog; the UX was horrible (the best frontends weren’t even written in ML), the plugins were extremely variable in quality, and it crashed whenever you did something unexpected. The whole project felt like a proof-of-concept for “OCaml can do stuff, honest!”, not a working system (in contrast to pandoc which feels like an ordinary unix tool that you wouldn’t even notice was written in Haskell if you weren’t looking).
I refuse to believe that modules are so much better than typeclasses for programming in the large: if they are, why haven’t they crossed over into any more mainstream language? We’ve seen people making a fuss about pattern matching in Swift et al, or list comprehensions in Python. I have never seen any non-ML language adopting ML-style modules (maybe OSGi is the same thing? But OSGi is not exactly a success story).
There are certainly some bad attitudes involved in Haskell. But if we’re going to talk about tone and the like, this post is worse than most of them. Calling anyone who disagrees with you a shill or bully or delusional and trying to psychoanalyze your opponents is not convincing; you’re making OCaml sound worse than Haskell here.
I don’t know if typeclasses or modules are better, but this argument you’ve made is not very good. Why haven’t people been adopting typeclasses either? Scala is the only language I know of that has something even resembling them. Pattern matching has not really made it to mainstream languages until recently, nor sum types, etc.
If your metric for if an idea is good or not is adoption by the masses, I think we’re going to have a hard time distinguishing good ideas from bad ideas.
I don’t know if typeclasses or modules are better, but this argument you’ve made is not very good. Why haven’t people been adopting typeclasses either?
I’m not necessarily claiming that typeclasses are better than modules, just that they’re not worse.
That said, I think they have been getting adopted. Many post-Haskell typed languages offer full typeclasses (Scala, Ceylon (edit: intended, not yet implemented), all the next-gen functional languages as listed by /u/rpglover64 ) and most of the remainder at least offer extension methods (C#/Swift/Kotlin). The only post-Haskell languages that I’m aware of that don’t have any typeclass-like functionality are those with deliberately simplistic type systems (Java, Go), optionally-typed languages (Dart), or untyped languages. Or have I missed something?
I looked up Ceylon, according to the FAQ, it does not support type classes, but could possibly at the future, is the FAQ no longer accurate?
You’re right, sorry, I misremembered. They are very much intended though AIUI.
Nope, I think you covered it all, thanks for the response.
Scala is the only language I know of that has something even resembling them.
Off the top of my head:
True, few mainstream languages have them, but they’re particularly useful for languages with a different type system than e.g. Java.
Whoops, you’re absolutely right about Idris/Agda/Coq, my mental frame was more mainstream languages.
And to be clear, my argument was not that they are not valuable but rather than the argument of “correct by virtue of adoption” doesn’t really hold, IMO.
Right. I did not intend to rebut your argument; merely to provide more examples of languages with something resembling type classes.
Also, Rust’s traits are pretty similar to typeclasses. (The question of whether Rust is “mainstream” can be a different thread. :) )
I would bet that pandoc has more real-world users than MLDonkey does today, and probably than it did ever.
MLDonkey seems like a horrible example to give; unison would have been my choice.
Shrug. I’d actually used MLDonkey, whereas I’d never even heard of unison.
The author’s blog is super interesting in the social experiment kind of way. His posts seem to be like the anti-vax equivalent of FP.
I wonder if this guy is a troll. His byline on the storify page is: “Tech for Alpha Males. No code of conduct. Vote Trump.”
Either he’s a Y Combinator partner (but there’d be more overt misogyny, in that case) or he’s satirizing the brogrammer culture. It’s trolling, as far as I can tell.
As with many parodies, it’s not really possible to tell whether that’s real or not. :(
The problem is that there are people who think exactly like him– and, too often, they find positions of influence and power. Most of them don’t blog, though, and he is (unlike the actual anti-intellectual mouth-breathers who exist in this industry) familiar with at least a few of “our” arguments.
What even is this? I just don’t get it.
5 - Strongly agree