| > but it's still a little frustrating, because I don't think it's a particularly interesting debate I agree this level of debate is not very interesting. Hickey did not give concrete examples. He caricatured a strawman Haskell rather than presenting Haskell as it is, that is as a language with at least partial, if not complete, answers to most of his complaints. I've asked here about a very specific example that could enlighten the debate and I hope I'll get an answer: https://news.ycombinator.com/item?id=15599451 > I also don't think he referred to Haskell specifically at any point Ctrl-F "Haskell" finds three places he explicitly mentioned Haskell (and as it happens in all three places he was promoting misconceptions about Haskell). He also quoted Simon Peyton Jones. This talk contained a significant anti-Haskell component and it's clear he doesn't understand Haskell. > I bet he thinks Haskell is a great language I don't, given what he said about it. He talks dismissively that you have to "prove" things to the compiler, that pattern matching is a terrible idea, that some programmers think 'that "correct" just means, I don't know, "make the type checker happy"'. I don't think he likes Haskell at all. But that's fine, because he doesn't understand Haskell at all either. > That being said, I don't think it's a compelling rebuttal to say: "If you use Dynamic and fdefertypeerror, Haskell addresses his issues." You'd be run out of town writing Haskell code like that. Firstly, I didn't claim that Dynamic and -fdefertypeerrors address his issues. I said that unless he mentions them explicitly he's not demonstrating sufficient familiarity with Haskell's dynamic capabilities to be critiquing them. Secondly, maybe you'd be run out of town for writing Haskell code like that, maybe not. If that level of dynamism genuinely adds business value as Clojure proponents are claiming in this discussion then why on earth wouldn't you write code like that? > But I think this should provide Haskellers a good opportunity to examine how casually dismissive they are of other languages, especially dynamic ones. IME, statically typed FP proponents are much more dismissive of dynamic languages than dynamic language proponents are of types. It's often "Your language is unsound garbage for lazy programmers" vs. "Sometimes the type system becomes an overly-complex constraint on my problem." That's an entire other discussion. Maybe Haskellers need to "examine how casually dismissive they are of other languages". Everyone and every community should be self-reflective. But I hardly think self-reflectivity is inspired by people promoting misconceptions about you. If anything it would be a Haskell apologia that promotes misconceptions about Clojure that should inspire the Haskell community to self-reflect. > As someone who does like types, I'm nonetheless glad that there are folks designing sound dynamic languages and arguing for their usefulness. Likewise. I just don't want them to spread disinformation and I'm not surprised when that disinformation is challenged. Personally I've got a lot out of this discussion. I agree wholeheartedly with Hickey's criticism of "place oriented programming" and I'm a proponent of adding row types to Haskell. I've also opened my mind to reconsidering the benefits of programming with `Dict String Variant` or `Map String Dynamic`. I've worked in a place that used that style and I don't think it worked well! But I will turn it over in my mind a few more times. |
Re. the Haskell mentions, they all relatively offhand and are usually combined w/ mention of another language, like C++ or Java. (I think this also doesn't help outside understanding since he's trying to talk about disparate static type systems in one fell swoop.)
Re. Rich's feelings about Haskell, there are not only the obvious language influences I cited, but also this very explicit response in the Clojure mailing list (https://groups.google.com/forum/#!msg/clojure/DUKeo7sT4qA/TU...)
"There is no purpose to a message like this.
Everyone, please refrain from language wars. Haskell is a tremendously ambitious and inspiring language, for which I have the highest respect. There is zero point in bashing it (or its users) in this forum.
Thanks, Rich"
Again, I see a lot of what looks like "bashing" to you as a response to an over-fetishization of "correctness," and over-hyping of types. I mean, how many times do you think Rich has heard someone complain that Clojure doesn't have types?
It's also nuts to keep saying things like "he doesn't understand Haskell at all."
Re. dynamism in Haskell, I still don't see this as a compelling point. Those things are unidiomatic and not really comfortable to use in Haskell. I mean, you can put type annotations all over your Clojure code, use typed Clojure, and spec and schema the crap out of your program and get all kinds of safety guarantees. I wouldn't make that an argument that Clojure can solve all your type safety concerns. It's just not a comfortable way to write the language. You can write functional code w/ immutable values in C++ and Java, but nobody does it, because the language makes it hard.
I raise the point about dynlang dismissiveness from Haskellers because I think in large part, the tone of the talk is response to a long history of Clojure being criticized and dismissed for being dynamic. I've used both Haskell and Clojure a lot, been in both communities, and really don't think this talk was the opening salvo of glib dismissals.
I think we both agree the sniping about pattern matching, etc. is not really that interesting, and my sense from the talk is that this is really a very secondary issue. (Indeed I think he makes the point that many features are good if you can get them a la carte, but having the language impose them on all your data can be costly.) It would be great to see Haskellers and Clojurians discussing bigger picture problems that go beyond language features, because the two communities share a lot of values.