Andrei Alexandrescu Wrote: I don't disagree with you (except that you probably meant "first class" rather than "first order").
But that wasn't the question. The question was "does a language have to enforce purity in order to be a functional language" and the answer is that historically that has not been the case. The Lisp family (especially Scheme) and the ML family both have a rich tradition of purely functional programming without ever having the purity enforced. They did not "adopt the functional window dressing"; they invented it. > Functional programming means (a) first-order functions, and (b) > immutability. There are no ifs and buts about it. Every text on > functional programming says as much. Even Wikipedia :o), but I'd > recommend this classic: > > https://docs.google.com/viewer?url=http://www.cs.chalmers.se/~rjmh/Papers/whyfp.pdf > > The rest (lambdas, extensive use of recursion, pattern matching, let and > letrec, monads, system(at)ic laziness) is aftermath, i.e. mechanisms > that make it convenient to program given (a) and (b). There are no ifs > and buts about that either. > > Giving FP lip service by adopting FP's window dressing and syntactic > sugar while at the same time not giving due consideration to FP's two > fundamental tenets is, in my opinion, an ungainly move in the long term. > > > Andrei
