26 comments

[ 3.1 ms ] story [ 86.2 ms ] thread
lisper messes around with Haskell and feels he understands the entire Haskell community well enough to smear it. After admitting to not understanding Haskell that well he now writes a second post doing the same thing.

Most haskellers that are serious about using it to create real world software don't seem to care a great deal about the mathematical side except for the occasions it is useful in their program.

Haskell is about writing safe, efficient, and high level functional code. The fact that some users can tinker with the mathematical side (correctly or incorrectly) is just a bonus.

It is sort of ironic coming from a lisper - the raised hackles of comp.lang.lisp about this sort of thing are pretty legendary.

I don't really want to talk about agreeing or disagreeing with the post, because if ever a discussion were going nowhere fast, that's the one.

I don't support the accusatory tone of the original post, but in view of this clarification, I believe the author does have a real point. The discipline of mathematics has a lot of prestige, especially in the programming community. By making use of mathematical concepts and vocabulary, Haskell has acquired a reputation as being particularly elegant and sharing in the conceptual beauty of very abstract mathematics. I struggle to understand category theory, and I struggle to understand Haskell, and I always assumed that my difficulty in precisely mapping concepts like monads between the two were because I just wasn't smart enough. (That is almost certainly the case regardless!) If thinking about the formal definition of monads isn't helpful when learning Haskell programming, is the use of mathematical terminology misleading?
This is an astute summary. Yes, it is misleading, but such is the way of language growth: when transferring concepts from one language to another, sometimes meaning is permanently mutated or lost.

Consider French "journée" and English "journey". The English word is a direct loanword from French, but in French it means "day" or "a day's work" and in English it means "a set amount of travelling". The etymology is fairly natural, but the English word only captures a fragment of the French meaning.

I think the analogy applies to monads as well: the word denotes/connotes something significantly different in Haskell than in mathematics. It's just the way it is. When learning Haskell, if you already know category theory you can use this knowledge to ease your understanding of the Haskell concept, but it's not a direct translation.

People can disagree on the precise definition of terminology, which is why, in any serious discourse, you have to define things before you begin discussion. The great thing about Haskell (or any programing language) is that you really have to define things. Jargon doesn't compile.

Nevermind the "real" definition of this or that esoteric concept. If you ask N category theorists you'll get N answers. Just import one that works for you and you're off.

What seems to have gotten this fellow is that either the definitions in the Prelude/libraries didn't match his expectation, or (more likely) he was surprised by the inconsistencies between GHC and GHCi (which I also find annoying.)

> After admitting to not understanding Haskell that well he now writes a second post doing the same thing.

Are you admitting you didn't read either posts?

What a weird article. I don't get the reason why people seem to need to find flaws in Haskell. It's a programming langauge. You type stuff into your editor, it runs, and you're happy? You are not a genius if you understand Haskell. You are not an idiot if you aren't excited by it. Why all the hate?

Ruby is nice, Perl is nice, Python is nice, Haskell is nice, Lua is nice, C is nice. Computers are nice. Just have fun making things and talking to like-minded people. Whining about the numerical tower is just wasting time that you could spend enjoying your life.

Let's be honest. I have been a language fanboi in the past. But really, it's not the language that's exciting, it's what you can do with it. Imagine a problem, type some words into your editor of choice, enjoy solution to problem. Repeat. That is what programming is about, not these petty flamewars. (And to be fair, I really like Haskell, and don't have the problems the author has. But even I can be swayed away from my own ignorance; I used to hate C [check my posting history!] and now I love it. I got over the superficialities and instead got excited over what I could do. I saw excellent C code in practice, like Mongrel 2, and realized that C is not a problem. Some C programmers do things I don't like, but others do amazing things. So why fight the language when I could do cool stuff other people like instead!? Why fight something that expands my mind and makes me enjoy life more!?)

Let's write code, not criticism!

I'm half convinced by your argument, but not entirely. There's a lot of unnecessary pain caused by programming languages that moving the industry forward could prevent. The goal is a useful one, I'm curious about the efficacy. Does language advocacy work? Does talking about this stuff change anything, or are we better off if pioneers just build cool things with a new language and lead by example? Have there been cases in the past where advocacy absent a project has created a community around a language?
Unnecessary depends on the problem at hand.

C is a lot of unnecessary pain if you're writing a web application.

Implementing an embedded control system? Very necessary pain.

We shouldn't evaluate programming languages critically? How did we end up with all these excellent languages? Are all languages equal in quality, productivity, and economy of expression? Can't we simultaneously debate their merits and solve problems with them?
Wow and I thought I was arrogant. I'm 21 and I'm sure if I came out with an article deriding the mathematics community for knowing nothing about computer science I would rightly be called an ignorant asshole.

This guy's 20, probably hasn't worked on a piece of software over 100k lines of code but he knows alll about computer science and programming, right?

i doubt that.
What?
(comment deleted)
oh i thought the blogger was over 20. nm, i guess he is 20 since he states it in his blog.
This is tangential to your point, but I don't think that experience is correctly measured by the size of the codebases of the projects you've worked on, but rather the number of serious mistakes you've made.
Yeah, poor example sure, but my point is that his programming experience is probably too limited to categorically denounce an entire programming language community.
What else do you think about my coding experience?
Experience, in my experience :) is measured by how many serious mistakes you made, and then went on to fix.

As far as the authors posts are concerned, though, it seems weirdly appropriate to quote Erik Naggum: "If this is not what you expected, please alter your expectations."

I don't appreciate the ad hominem but I'll respond.

> This guy's 20, probably hasn't worked on a piece of software over 100k lines of code but he knows alll about computer science and programming, right?

I, the author, have worked with software over 100k lines of code (one example is Giac/Xcas). If we are going to talk about "industry code", we probably won't talk about Haskell (I am not implying it isn't or can't be used in industry, but Java/C++/etc. trump).

I am not claiming to be an expert at anything. If you believe I have made a claim, please feel free to let me know where.

Lastly, I'm not quite sure why my age matters. Perhaps I should delete it from my "about" page.

Lastly, I'm not quite sure why my age matters. Perhaps I should delete it from my "about" page.

I don't think deleting the part letting people know that you don't have any experience with industry programming is going to change the fact that you don't have any industry programming experience.

The issue is precisely this. You're making an assumption about my coding history which is entirely unfounded and apparently based on my age. You are right, I have not coded in Java for a company for 35 [sic] years. My good friend Bob has not coded at a company in Haskell for even 2 years. I'm not sure what your point is. I have done mundane, boring, "customer databases in Java"-esque programming before, but again, I don't see how it is relevant.
Try discussing the blog post instead of the author's bio. It may be a more convincing (and grown-up) way to air your disagreement with it.
(comment deleted)
> It is impossible to ensure that a monad within Haskell conforms to the monadic axioms (in other words, it is impossible to ensure a monad within Haskell is actually a monad).

It is impossible to ensure almost anything in any programming language without dependent types or an external prover.

Sometimes, programmers name things as they ought to be, not as they are guaranteed by the compiler to be. See, for instance, Hungarian notation.

> Haskell’s relationship to category theory, which has been so thoroughly emphasized, has had a profound effect on the majority of the community.

This is not my experience with the Haskell community. I have been writing Haskell for 7 years.

> I have personally spoken with countless Haskell programmers who, either implicitly or explicitly, assert they are expert users of the language.

I do not think "assert" and "implictly" go along very well together.

> As a result, the community becomes inundated with programmers who make a sort of claim to understand Haskell (and, erroneously, therefore category theory).

It is not my experience that the Haskell community is inundated with programmers who make a sort of claim to understand category theory.

I do think the Haskell community is inundated with people who sort of claim to understand Haskell, but that seems like the definition of a PL community.

> All I ask now is that you all don’t get your panties in a bundle again over this post

If one uses inflammatory language like "pervert", "flagrant disregard for mathematical correctness", "I take severe offense", one should expect an equally inflammatory response.

What is this I don't even?!

Haskell is Haskell, math is math, category theory is category theory. They are not the same, even if they have some things in common. Deal with it.