I agree. As with "OOP," the term "functional programming" is too broad to be the subject of a meaningful discussion about language design. It's better to break the term down into its sub-concepts, which are often independent of each other.
I question whether the notion of "programming paradigms" should exist. The more powerful a language is, the less I seem to notice paradigms in my code. I can't point to a piece of Lisp code and say, "this code is functional," or "this code is imperative," or whatever. I just use the tools that are most appropriate for what I'm trying to do.
Paradigms are like design patterns in this respect; they only seem to arise in languages whose weaknesses force you to write code a certain way. I think "multi-paradigm" languages like Lisp and OCaml would be better described as "no paradigm," and this is how languages ought to be.
I question whether the notion of "programming paradigms" should exist. The more powerful a language is, the less I seem to notice paradigms in my code. I can't point to a piece of Lisp code and say, "this code is functional," or "this code is imperative," or whatever. I just use the tools that are most appropriate for what I'm trying to do.
Paradigms are like design patterns in this respect; they only seem to arise in languages whose weaknesses force you to write code a certain way. I think "multi-paradigm" languages like Lisp and OCaml would be better described as "no paradigm," and this is how languages ought to be.