3 ms·
>Haskell is far simpler I disagree. If anything, both Scala and Haskell are comparable to C++ in terms of complexity. Haskell is in fact, a bottomless pit. Du
by verroq 14y ago
>Haskell is far simpler
I disagree. If anything, both Scala and Haskell are comparable to C++ in terms of complexity. Haskell is in fact, a bottomless pit.
During your descent into madness, you may encounter functors, monads, comonads, free monads, higher ranked types, arrows, zippers, existentially/universally quantified
types, GADTs, kinds, and the other 300 extra compiler extensions that people use on a daily basis.
Documentation is provided in the form of academic research papers.
Not that I'm saying it's not an exciting journey, but it is a long journey.
- yummyfajitas 14y agoAt it's core, Haskell is very simple. Functions are always curried. There is no subtyping. Typeclasses are the only method of polymorphism. Everything you mentioned above is just a library on top of this. In contrast, Scala has java-style subtyping built into the language, along with traits which are a weird mishmash of typeclasses and interfaces. There is quite a bit of complexity surrounding functions/methods. You have implicits to think about. Heck, just look at the type signatures in both languages and compare.
- wonderzombie 14y agoC++'s complexity stems from the fact that it's one big leaky abstraction on top of C with a ton of warts, not because it derives from complex academic or conceptual depth. I'm not saying Haskell is easy. I'm just saying they are categorically different kinds of complexity.
- elehack 14y agoYes, not all complexities are created equal. Haskell, and to a bit of a lesser extent Scala, have a lot of their complexity arise from combinatorial explosion of interactions of simple features. Also, relentless abstraction (particularly in Haskell). Yes, you can think of lots of things as arrows. But does it necessarily make it easier to write a particular problem to do so, or does the cognitive load required to maintain the abstraction <-> problem mapping outweigh the benefit of casting it as the abstraction?