2 ms·
> Functional programming and lazy evaluation are common in Apache Spark Spark ain't a language, it's an engine. Anyhow, you could make the point for lazy evalu
by pyrale 7y ago
> Functional programming and lazy evaluation are common in Apache Spark
Spark ain't a language, it's an engine. Anyhow, you could make the point for lazy evaluation in stream libraries in many languages. It's not really comparable to having this as a first class citizen in the language, just like Guava didn't make Java7 equal to Java8.
> Non-nullable types can be found in Java (@NonNull) and in C++ (references). C++17 got std::optional type.
The reason people talk about it isn't about having non nullable types, it's about not having nullable types (or, at least, not having them as a default).
> We have languages without inheritance, like Go, Rust and so on.
I don't believe not having inheritance is a language feature. People may say that inheritance was a mistake and that languages without it are better off, but you will rarely hear about no inheritance being a feature of a language.
> Errors-as-values are pretty common as well (C++'s boost had boost::error code for a while now, and of course there is Go again)
Haskell has an error system. Errors as values are a pattern enabled by other things of the language (ADTs, functors/monads), but not having errors is not a Haskell feature. Elm would be a better example of this.
> Even monads find themselves in other languages
See above point about first-class things in a language.
Your analysys about features is misguided because languages aren't things that can be compared feature by feature. They are a coherent set of things that produce a specific dev experience. Haskell is offering a specific experience that people enjoy, and therefore, people talk about it, and some other languages tend to adopt some of the features in an attempt to reproduce the experience.