I don't see much use in a definition of "functional language" that includes nearly every computer language. We already have a term for that.
Re:Hey, C Is a Functional Language Too
by markokocic on Friday November 02, 2012 @11:05AM
(#4732951)
I agree that "nearly every computer language" can be considered functional, as "nearly every computer language" can be considered imperative.
What I do not agree is when "functional programmers" claim that language is not "functional" just because it is not "pure functional" or Haskel alike.
well it's primary use seems to be providing a moving goal post for the functional side during the occasional OO vs Functional skirmishes.
That is required for parity with the OO side. Cf. Alan Kay on OO.
quite.
Smalltalk is OO and Haskell is Functional are about the only (currently) accepted facts about the definitions of OO and Functional.
I always thought the fundamental difference between a functional and imperative language is that a functional language is built up from expressions, whereas an imperative one is built up from statements.
I think you at mixing words that look similar. It is a large problem in this sort of discussion:
Pure functions. (Only Haskell and friends are strictly pure, as is SQL if you squint.)
Higher order functions. (Java 7 doesn't allow you to pass around a callable function without embedding a link language with reflection or using one-method Runnable.)
First class functions. (Basic, SQL do not have this.)
Generic functions. (C does not have this. C++ does. Java does.)
These are three orthogonal properties a Lang age may have some or all of.
I don't know why, but some years ago, "functional programmers" started to change and twist the definition of functional language step by step, until all those languages fell off and only Haskel remained as "functional enough".