Earlier quoted context omitted.
> Functional programming as a concept is well defined, and it's not merely "first-order functions". Then, sincerely, what is the definition? Does that definition succeed in excluding languages that are not considered functional, e.g. C++, Java, Python, Go? And if it doesn't, and the definition is so broad as to encompass every language, then what is the useful purpose of going out of one's way to label a language as…
Functional programming languages, more often than not, distinguish themselves with some combination of the following features: * First-order functions * Partial function application / currying * Type inference * Algebraic data types * Typeclasses * An emphasis on pure functions (side effects must be explicitly annotated), opening up more possibilities for static analysis * Lazy evaluation This is not to say that the…
This statement is pretty vauge and further supports kibwen's claim that a term "functional programming" ceased to be meaningful or is in the course of being so. I can't see the reason that Rust is not as functional as OCaml by your standard, as both fill four boxes out of seven (only OCaml has currying, only Rust has typeclasses). It can be argued that Rust was not originally designed as functional one, but that would be absurd because it doesn't relate to the current language.