3 ms·
i have railed/ranted (occasionally belligerently) about haskell after having a professional brush with it two years ago. haskell hasn't taken over the world bec
by mlevental 8y ago
i have railed/ranted (occasionally belligerently) about haskell after having a professional brush with it two years ago. haskell hasn't taken over the world because the community is haughty about haskell's giant warts. yes it's very welcoming and open to indoctrinating you on "best practices" but as soon as you diverge in the slightest (because someone before you diverged or because you need to do something unconventional) they're completely obstinate about how ugly the language/experience can get.
the most of obvious instance of this is point free form combined with overloaded operators combined with 8? arities. if you bring this up on r/haskell or #haskell you will get shouted down about how it's not best practices to abuse that so why even bother discussing because you can write unreadable code in e.g. python. this is absolutely true but the ugliest python is still clearer than the brainfuck homage that haskell turns into with stuff like
$<><>$%%^^^ a b (@@@<> c d) $$$ e f
the point here is not to rehash the debate but that no one takes this complaint seriously because elegant haskell is the one true scotsman and everyone else's haskell is irrelevant.
another obvious thing is the complete lack of good tooling. stack/cabal/cabal-sandboxes/another cabal thing that's been created since i stepped away last year. there's no ide because real programmers write code using butterflies flapping their wings so why would you need anything other than cobbled together vim/emacs plugins. wanna debug? set a breakpoint in ghc but you can set breakpoints in ghc only 20 calls deep! don't even get me started on how slow the compiler is. does anyone listen to these complaints? no. why? my hypothesis is that it's like a fraternity with a hazing ritual (combined with many serious cases of stockholm syndrome).
i think a fair comparison is rust (despite being imperative). linear types are probably as foreign as purity/immutability to people and yet rust has 10x more mindshare than haskell. why? because rust maintainers care about ergonomics!
i could go on but i'm sure i'll get responses that chastise for not sticking with it long enough or not putting in the work or something else when the reality is that it wasn't worth it - i wanted a strong type system and the price i had to pay for it was too high. plenty of other strongly typed languages (ocaml, rust, f#) without all of the pain of haskell and the intransigence of the community.
- galaxyLogic 8y agoGood rant and thanks for the example. Seriously, is this really Haskell: $<><>$%%^^^ a b (@@@<> c d) $$$ e f What does it do?
- mlevental 8y agoi made that up but absolutely you can make this a thing in haskell because of operator overloading
- voxl 8y agoThis is not a valid argument. I don't know Haskell beyond basic fundamentals and I know that your argument is ridiculous. Just consider C++ and boost::spirit. Overloading operators can lead to ridiculous syntax in pretty much any language that supports it. C++ doesn't have any _real_ problem with overloading in _real_ code bases. I wouldn't expect Haskell to have this problem either. Being able to construct ridiculous code is not an excuse for a language not catching on. Tooling is exactly the same point. Tooling in C++ land is completely ridiculous. In comparison to Rust there is no argument, Rust is strictly better. However, C++ is still doing quite well for itself in industry. Also, Rust's type system is not linear, it's affine, you can declare a variable and not use it.
- mlevental 8y ago>Just consider C++ and boost::spirit. Overloading operators can lead to ridiculous syntax in pretty much any language that supports it. you can't define new operators in c++? you can only override existing ones and not even all of them https://stackoverflow.com/a/8425207/9045206 https://stackoverflow.com/a/8425207/9045206 >Tooling is exactly the same point. Tooling in C++ land is completely ridiculous. Microsoft Visual C++ is arguably the best ide period. make/cmake are rough sure but i'll take that in-exchange for being able to set visual breakpoints. >Also, Rust's type system is not linear, it's affine, you can declare a variable and not use it. <rolls eyes> does that make more or less foreign to users?
- ernst_klim 8y ago>$<><>$%%^^^ a b (@@@<> c d) $$$ e f Have you ever heared of C language? It is much worse: https://github.com/jsoftware/jsource/blob/master/jsrc/ai.c https://github.com/jsoftware/jsource/blob/master/jsrc/ai.c