Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I very much enjoy coding in Haskell, and would definitely say that it changes the way I think about code. In particular, it's taught me that strong static typing, no null references, and avoiding side-effects wherever possible are all great things and IMO, those who don't use these are doing themselves a disservice most of the time. I also think that type classes are an excellent way to handle polymorphism, really quite beautiful. Immutable data is also (in many cases) a great thing. And the syntax is gorgeous.

However, I hate articles like this; they really don't help their cause, they sound driven as much by ideology as anything else, and in this case, there's even a financial motivation. It plays into the stereotype that Haskellers tend to find their language superior to any other, almost by definition. For example, many the benefits that the article touts would also be found in dialects of ML, or in Scala. However, many Haskellers I've talked to poo-poo these other languages because "they're not pure," or some other vague criticism. I don't mean to generalize, of course; many Haskellers probably embrace other languages as well, but it's certainly not uncommon.

Furthermore, Haskell is not at all without its warts: aside from its steep learning curve, it has package management issues and spotty documentation. Moreover because of its bizarre IO system (which mostly seems to exist for academic reasons, not for any practical purpose -- there are other, easier ways to disallow IO outside of sanctioned functions), it demands the use of Monads everywhere, and generally insists on a particular style which can be very restrictive. Last but certainly not least, its default laziness (once again, done mostly for academic reasons) can lead to bizarre performance issues, bugs which are hard to debug. The amount of hoops to be jumped through to accommodate laziness in Haskell is significant, to say the least.

Haskell has a number of great things in it. Functional programming on the whole is a blast to write and leads to very stable, readable code. But Haskell is far from the only answer. That said, it is a lot of fun to write, and its recent upswing in popularity is a very good thing, IMO, aside from the often pretentiousness of its users. At the least, it's raising the profile of functional languages in general, and opening the door for new languages which take the good parts from Haskell and leave behind the not-so-good.



>It plays into the stereotype that Haskellers tend to find their language superior to any other

So does everyone else. Ruby users don't advocate for ruby because they think ruby sucks. Replace ruby with any other language and the statement holds true.

>it has package management issues

No more so than other languages.

>Moreover because of its bizarre IO system (which mostly seems to exist for academic reasons, not for any practical purpose

What on earth are you talking about? Why is it that everyone I see posting "I totally like haskell but..." on HN displays a very basic ignorance of haskell? What is bizarre about the "IO system" in haskell? The fact that IO actions have a type? That is entirely for practical purposes.

>it demands the use of Monads everywhere

It most certainly does not. People use monads frequently because they are incredibly useful. You do not need to know what a monad is or how it works to use one.

>Last but certainly not least, its default laziness (once again, done mostly for academic reasons) can lead to bizarre performance issues, bugs which are hard to debug

The only criticism in your list that is actually loosely based on reality, and you still managed to get pretty far off-base. Haskell is not lazy for "academic reasons" (what does that even mean? Do you think they hand out phds for making a language "acadamic-y" enough or something?). Laziness was a choice, just as strictness is. It has pros and cons, just as strictness does. Being unfamiliar with laziness does not make laziness bad. For 90% of code, it doesn't matter. For 10%, you want to ensure strict or lazy evaluation. Regardless of which one is the default in your language, you want the other to be an easy to use option. This is the case in haskell.

>The amount of hoops to be jumped through to accommodate laziness in Haskell is significant, to say the least.

I have ~100k lines of haskell code in production. I have never even thought about having to "accommodate" laziness in any of that code. I have exploited laziness in a couple of spots as a free optimization, but otherwise it didn't even come up.


I'm not a big fan of condescension and being spoken to like a half-wit. I'm sure you're much smarter than me. You've certainly demonstrated all of my favorite characteristics of Haskellers. Like I said, I love Haskell, have written a good amount of it, and am excited to keep learning more. Unfortunately, one of the big downsides of Haskell is having to learn it from people like you.


I was not condescending nor did I speak to you like a half-wit. Unfortunately it is quite difficult to call someone out on making statements that demonstrate ignorance without causing offense. Haskell has many problems, but the things you listed are misconceptions and misunderstands spread around by people who have heard about haskell but not used it. I'd certainly like it if you are able to be more specific about what you think the "weird IO system" problem is.


In some sense, it is condescending to insist that you were not. You may be certain that was not your intent, but you can't really know how your words come across.


So does everyone else. Ruby users don't advocate for ruby because they think ruby sucks. Replace ruby with any other language and the statement holds true.

I think thinkpad20 is referring to the notion of Haskellers as similar to the idea of Smug Lisp Weenies [1]. Justified or not, it's a perception that has been built up around the language and its users. Unfortunately, perception is important. D came up earlier today, does anyone else recall its terrible reception on /. from about 10 years back when it's creator was pushing for it there?

[1] http://c2.com/cgi/wiki?SmugLispWeenie


Sure, and I agree lisp, clojure, ml, haskell, etc get that reputation more than others. I am just pointing out that they get that reputation by doing the same thing everyone else does, so it isn't really a valid criticism.


As a cultural note, PHP users don't claim that using other languages makes one's programs inherently dangerous. Or that using their language makes the programs bug-free. etc. (as we see in headlines of blog posts linked here.) One does not come in for scolding and condescension by PHP programmers merely for using other languages.

Whatever the faults of PHP might be, PHP programmers are distinctly more pleasant in this respect. And actually the same is largely true of Lisp, which emphasizes things like homoiconicity and expressiveness but doesn't make the actually absurd claim that it eliminates bugs or is the only way anyone should write code.

Really there aren't any other languages which can compare with Haskell in regard to the aggressiveness of their advocacy.


It's cooled down by now, but I recall far more aggressive advocacy for Python even just a few years ago. Everyone was pushing it as the best language ever and a healthy breath of fresh air from whatever else they happen to be using. After all, all those other languages are not Pythonic! Of course, look where that got them.

PHP users do not talk about other languages as being inherently dangerous because they simply do not have a leg to stand on. They're perfectly happy talking about how all other languages are impossible to set up and completely impractical for beginner web programmers though--just look at any recent PHP thread on HN. They essentially push PHP as a language for "Joe the plumber", which I personally find rather more condescending.

And, before my time, OOP was getting pushed far harder than functional programming is now. I've read plenty of old articles and whole books about how OOP (in its C++ or Java guide) is essentially the second coming, here to liberate you from your horrible procedural C/Perl ways. Hell, design patters practically became a religion with the gang of four as its prophet. Good times. But hey, with all that crazy proselytization, there's no way that cult or Java would ever catch on, happily.

Don't even get me started about Go, the language whose designers dismiss practically every recent PL advancement as academic nonsense and have reinvented a bunch of wheels. And yet it's "just in a league of its own for concurrency", to quote a recent HN post.

But yes, Haskell is unique in this regard.


  >> claim that it eliminates bugs
You may not have read 'Land of Lisp'.


> People use monads frequently because they are incredibly useful.

"People use conventional programming languages frequently because they are incredibly useful." How about that?


How about that what? I don't understand why you are posting a completely obvious and completely irrelevant statement, nor what you are trying to ask me about that non-sequitur.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: