11 ms·
OCamlers' critiques of Haskell
- bbcbasic 11y ago> When I met a Haskeller at the pub after a mini-conference and I mentioned that I didn't like Haskell he began frothing at the mouth and punching the table. When we got up to leave he refused to shake my hand. This is just gold! All the Haskellers I have met seem to be quite normal, helpful. Maybe this guy rubs them up the wrong way.
- lispm 11y agoSearch for 'Jon Harrop' and you will begin to understand why...
- conistonwater 11y agoIsn't that the user that left the comment, jdh30?
- radmuzom 11y agoJon Harrop often comes across as too negative and is described as "well known internet troll". However, his thoughts are usually quite valuable and often better than what he is credited for. His contributions to the F# community are well known.
- lispm 11y agoThe Lisp community remembers when he trolled them. Basically he wanted to create clicks for his commercial offerings, unrelated to Lisp. Some kind of anti-marketing strategy, which fired back. Since then his business failed and he trolls the Haskell community as a hobby, from time to time. Really 'valuable' thoughts from him are rare. 'Valuable' more for him. ;-)
- alricb 11y agoSome context from back in the day... http://harrop-highly.blogspot.ca/ http://harrop-highly.blogspot.ca/
- Chlorus 11y agoWhy do I have the sensation that critiquing programming language communities in general is going to end in, shall we say, less than constructive conversations?
- yokohummer7 11y agoThat's not my experience. Most Haskellers are indeed good people, but quite a few "vocal" ones are extremely arrogant and intellectually dishonest. Let me give some examples that I've met recently: - A Haskeller once said Haskell is just as easy as Go to learn. I mean, yeah, many moderately complex languages might be as complex as Haskell, but seriously, Go? It is designed to be as simple as possible. Hell, it even doesn't have generics, which is considered pretty essential in nowadays' statically typed languages. And this claim isn't an outcome of ignorance. He is the author of a very popular Haskell learning material. - Another said: "Steep learning curve is an interesting expression, because what it actually means is that one is learning quickly." Ok, that's not my interpretation of "steep learning curve" of Haskell. - "The average Java programmers are worse than the average Haskell programmers" thing. This sentiment even existed in one of the "how to spread Haskell to the industry" presentation. I'm pretty sure if Haskell does be accepted by the industry, it will have the exactly same dumb programmers using it. So, what's the point? You must be lucky if you haven't met any of them in the Haskell community. Actually, their reputation outside of the community is quite terrible. This must be resolved if Haskell wants to succeed. (And yeah, please stop saying "avoid success at all cost". I know it can be interpreted as "avoid $ success at all cost", just stop it.)
- Tomte 11y ago"Steep learning curve is an interesting expression, because what it actually means is that one is learning quickly." That is technically correct in the original meaning of "learning curve". Many technically inclined people totally disregard changes of language and cling to their perceived "pure" meaning.
- Zarathustra30 11y agoJust plot "Effort Needed" by "Skill Wanted". You get a nice, steep curve.
- deleted 11y ago[deleted]
- seanmcdirmid 11y ago
- fp-incompleted 11y ago"All the Haskellers I have met seem to be quite normal, helpful" This is the same kind of weak response you see from Rubyists whenever someone points out their community's well-documented asshole problem (eg: Steve Klabnik bringing a woman to tears by publicly ridiculing her project and offering only an insincere non-apology when called on it, any blog post ever by DHH or ZS, Felipe Contreras' tantrums on public mailing lists): "Well, in my experience, everyone in my community is super nice and helpful, so you must be wrong." Off the top of my head, I can easily recall several Haskellers on HN who've come across to me in the past as pricks, and on multiple occasion at that: dons, loup-vaillant, and coolsunglasses. The Haskell community, like that of Ruby, is quickly getting the reputation it deserves.
- fp-incompleted 11y agoSome concrete examples: https://news.ycombinator.com/item?id=9036331 https://news.ycombinator.com/item?id=9036331 https://news.ycombinator.com/item?id=8646242 https://news.ycombinator.com/item?id=8646242 https://news.ycombinator.com/item?id=9973567 https://news.ycombinator.com/item?id=9973567
- spatulon 11y agoOK, those are pretty bad.
- boothead 11y agoThe thing is that it's not a "weak response", it really is people's opinion. I've experienced some cases where I've been spoken to a bit sharply, and some where people have come across a bit impatient when I haven't "got" something they understand. The thing is that I don't process it as people coming across as a dick, so my subjective experience is that the community is helpful. As to the three examples [1] you picked out of Haskellers coming across as pricks, I honestly, truely, completely don't see anything in any of these comments beyond forthright assertions of opinion. Would you be able to maybe break down what you find objectionable? [1] As disclosure: I currently work with dons, and I also know willtim.
- lispm 11y ago> This is just gold! This thread reminds me of Tortuous Convolvulus.
- yohoho22 11y agoThe OP on reddit lists several earlier "What are Haskellers' critiques of <X functionalish language>" threads. Here's another recent one going in the opposite direction, like this one, but asking Clojure fans about Haskell: https://www.reddit.com/r/Clojure/comments/3h4qdk/what_are_clojurians_critiques_of_haskell/ https://www.reddit.com/r/Clojure/comments/3h4qdk/what_are_cl... A lot of the Clojure programmers seemed to focus on things, like records, that often bug Haskellers, too.
- conistonwater 11y agoFrom the top comment: > Yoneda-crazy: I know Haskell, I know some category theory, but I am highly sceptical that teaching the Yoneda Lemma to C++ programmers is actually useful in any way. This is infuriatingly true. Everything you do in Haskell you can understand in terms of what code gets executed where and how. This is just as true of Haskell as it is of any other high-level language. Indeed, you can take an arbitrary Haskell program, and rewrite it in C with the same semantics, and all you'll learn is how GHC's runtime is implemented and how it executes your program. For a small concise program, this actually makes for a nice exercise. I don't know why, but people sometimes seem to think the runtime is "magic".
- pjmlp 11y ago> I don't know why, but people sometimes seem to think the runtime is "magic". Apparently somewhere in the last 20 years people stopped learned about how compilers work. That knowledge is now kept by the few druids that possess the abilities to read the old runes and release the enchantments that reside in them.
- tormeh 11y agoAt my school (NTNU) there's even talk of removing the compiler course. It's a ye-olde write-a-compiler-for-a-c-like-language-in-c course ("the cs students should learn C at some point "), which I find all kinds of wrong, but it's still sad.
- pjmlp 11y agoJust checked NTNU.I've spent sometime in Trondheim when doing consulting for NetCom, nice city. My university (FCT/UNL) had a strong focus in language design, data structures and systems programming back in the 90's as part of the compulsory lectures, with everything else being optional credits.
- cousin_it 11y agoJust curious, what's wrong with writing a compiler for a C-like language in itself? It seems to me that one of the goals of a compiler course is to fill the mysterious gap between what machines do and what high-level languages do. For maximum educational effect, the language being compiled should be the same as the language used for the compiler. Anything higher level than C would probably require a runtime, with garbage collection etc., so a C-like language seems like the obvious sweet spot.
- edgyswingset 11y agoAlthough this isn't OCAML, one thing I ended up missing when writing Haskell was F#'s Active Patterns.
- porges 11y agoThese exist in Haskell as "Pattern Synonyms". Here's a partial translation of some of the F# examples on MSDN to Haskell; {-# LANGUAGE PatternSynonyms, ViewPatterns #-} pattern Even <- ((`mod` 2) -> 0) pattern Odd <- ((`mod` 2) -> 1) testNumber x = show x ++ case x of Even -> " is even" Odd -> " is odd" data Color = Color { r :: Int, g :: Int, b :: Int } pattern RGB r g b = Color r g b -- NB: this is bidirectional automatically printRGB :: Color -> IO () printRGB (RGB r g b) = print $ "Red: " ++ show r ++ " Green: " ++ show g ++ " Blue: " ++ show b -- pretend we have functions to and from RGB and HSV representation toHSV :: Color -> (Int, Int, Int) toHSV = undefined -- implement this yourself! fromHSV :: Int -> Int -> Int -> Color fromHSV = undefined pattern HSV h' s' v' <- (toHSV -> (h', s', v')) -- here we explicitly provide an inversion where HSV = fromHSV printHSV :: Color -> IO () printHSV (HSV h s v) = print $ "Hue: " ++ show h ++ " Saturation: " ++ show s ++ " Value: " ++ show v -- demonstrating being able to use pattern -- to construct a value addHue :: Int -> Color -> Color addHue n (HSV h s v) = HSV (h + n) s v
- bliti 11y agoI've toyed with Haskell before (enjoy toying with languages in my spare time). Its a nice language, that has a good community. But for some reason I could not see myself using it as one of my main goto (no pun intended) languages. Not due to any technical reason. Mostly because there is no easy introduction into it. No small projects to undertake showing what practical uses it might have. No twitter clone using SQLite (laugh all you want, this type of tutorial project helps understand how the language should be used and showcases libraries). Its just seems purely about doing math with it. But Im probably wrong. Last time I looked into it was about a year ago. I'll gladly look again if anyone can comment about it.
- Chlorus 11y agoHave you checked out Real World Haskell by Bryan Sullivan? It's different than most Haskell resources I've found in that it introduces you to monads & IO fairly quickly, so you're not trapped with toy math problems. That was an issue I had with Learn You a Haskell for Great Good - finding the sum of all odd squares that are smaller than 10,000 is good and all, but not exactly a programming problem I have often...
- bliti 11y agoI have not. Will do so now. Thank you for recommending it. For anyone interested, here is the direct link to the online version of the book: http://book.realworldhaskell.org/read/ http://book.realworldhaskell.org/read/
- danidiaz 11y agoI have found micro-web frameworks like Spock https://www.spock.li/ https://www.spock.li/ or Scotty are a good way to "get something started" in Haskell. With that, "aeson" for JSON, "sqlite-simple" for persistence and perhaps something like "lucid" for HTML, you are half-way to that twitter clone... :)
- radmuzom 11y agoNote that the book is a bit dated, though most chapters are still "valid". See this question from Stackoverflow [1] - Which parts of Real World Haskell are now obsolete or considered bad practice? [1] http://stackoverflow.com/questions/23727768/which-parts-of-real-world-haskell-are-now-obsolete-or-considered-bad-practice?rq=1 http://stackoverflow.com/questions/23727768/which-parts-of-r...
- more_original 11y agoOne technical reason that makes me prefer OCaml to Haskell is Haskell's weak module system. I think there should be a good way to parameterize one module over another module (interface) and to use different instantiations of the module in the same program. I think people do such things using type classes and typing constraints. But I found this being awkward, because the compiler needs to be able to resolve the constraints automatically and there are issues with overlapping instances and the like. To quote Bob Harper: As a consequence, using type classes is, in Greg Morrisett’s term, like steering the Queen Mary: you have to get this hulking mass pointed in the right direction so that the inference mechanism resolves things the way you want it to. [https://existentialtype.wordpress.com/2011/04/16/modules-matter-most https://existentialtype.wordpress.com/2011/04/16/modules-mat...] (I think this applies most of all if one is using type classes to emulate a module system. For other purposes, type classes are quite nice.) Maybe Backpack will solve these issues. [http://plv.mpi-sws.org/backpack/ http://plv.mpi-sws.org/backpack/]
- jordwalke 11y agoI am an unashamed OCaml fan, but I think my previously stated analogy is suitable: "FP communities: like debating which brand of natural spring water to give millions of thirsty people in the desert" https://twitter.com/jordwalke/status/566719390272335872 https://twitter.com/jordwalke/status/566719390272335872 Note that I do genuinely appreciate the discussion, while finding the overall scene humorous.
- cousin_it 11y ago> "FP communities: like debating which brand of natural spring water to give millions of thirsty people in the desert" ...who all claim that they're not thirsty and prefer beer :-)
- bunderbunder 11y agoThat's a really magical analogy right there. Though I'd take it a step further and say nowadays even stumping for an FP language smacks of the same sort of thing. Case in point: I've probably done more to evangelize functional programming by just demonstrating to colleagues that they too can write their own higher-order functions - just like LINQ! - in C# than an army of Haskellers could accomplish in a lifetime of hurling jargon from category theory. My thought is, if FP is really so great then I should be able to show people by writing some functional code and then having someone else come along later and go, "Hey, that's great!" When I find I can't do that then that's a signal that it's time to double-check the ingredients of my fruit-flavored beverage. Yeah, that does mean I have to accept that Racket will forever be a hobby language for me. My boring sellout Herman Miller-cradled enterprise developer butt is comfortable with that.
- the_af 11y ago> My thought is, if FP is really so great then I should be able to show people by writing some functional code and then having someone else come along later and go, "Hey, that's great!" When I find I can't do that then that's a signal that it's time to double-check the ingredients of my fruit-flavored beverage. I don't know about that. Sometimes people must make the effort to move beyond their comfort zones in order to find tools that are (potentially) more useful. You cannot expect every improvement to be self-evident with minimal effort. There are significant rewards in "making the jump", so to speak.
- deleted 11y ago[deleted]
- afy 11y agoWrong thread! :)