>Python is anything but easy, it is the same caliber as C++, just lacking implementations able to execute as fast.
Yeah, that's stretching it to absurdity.
Python is easy to get started, and easy to adopt any of the extra features (e.g. slots, metaprogramming, async, etc) piecemeal. And easy to read most codebases.
Haskell is not easy to get started, not easy to adopt the extra features piecemeal, and not easy to read most codebases.
While it looks like piecemeal to adopt metaprogramming, decorators, multiple inheritance, slots, operator overloading, extension of built in types, generators, async/await, their use combined in the hands of clever programmers, is anything but easy.
Hmm ... debatable. I have to dig in to the implementation of Python libraries and Haskell libraries regularly. I'm much more confident that I'll come away understanding the latter than the former!
> not easy to adopt the extra features piecemeal
I can't see any evidence of this. Can you name a few Haskell features that can't be adopted in the absence of other features?
I didn't say that they "can't be adopted", but that it's "not easy" to adopt them (and specifically it's not as easy as Python or even Java, C#, Lua, whatever) -- because they come with a bigger mental burden...
How do you functionally manipulate an indexed mutable structure like a vector?
How about the common task of CSV file manipulation? Database access? (Simplest of FFI.)
Not reopening nor reparsing the file every time you want to do something? At the same time, with known upper bound on memory use?
Note how almost none of standard CRUD and web stuff is easy to write in Haskell from scratch and libraries do not help a lot.
You always end up in some variant of IO monad, typically multiple incompatible ones at the same time, making the pure functional nature of the language moot. You get to glue the various kinds of IO explicitly.
Haskell feels like writing a CPU (high level state machines everywhere), except with less readability and more verbiage than Verilog. The propensity of Haskell programmers to abbreviate everything and add redundant "helper" functions under different names does not help.
Programming is stateful because world has a state, and Haskell's handling of state is annoying at every step even for someone versed in it.
Firstly, the question was very specifically to coldtea to help flesh out his/her claim that it is "not easy to adopt the extra features piecemeal". So far that claim doesn't seem to have be substantiated.
Secondly, are you really saying you believe that Haskell doesn't have all these features? That there aren't good ways of mutating arrays, writing CRUD apps, combining effects, etc.? Presumably then, your jaw would hit the floor if I could demonstrate that everything you believe is false.
Yeah, that's stretching it to absurdity.
Python is easy to get started, and easy to adopt any of the extra features (e.g. slots, metaprogramming, async, etc) piecemeal. And easy to read most codebases.
Haskell is not easy to get started, not easy to adopt the extra features piecemeal, and not easy to read most codebases.