4 ms·
Because once a technique becomes widely used, we stop calling it "functional." (Loosely borrowed from the same explanation for the lack of success in AI) Map/
by asolove 17y ago
Because once a technique becomes widely used, we stop calling it "functional."
(Loosely borrowed from the same explanation for the lack of success in AI)
Map/reduce comes from functional languages, but now we're used to it. Write-once variables is an idea from functional languages, now used in most optimizing compilers, so now we're used to it. Transforming input to output according to a backtracking state machine is a functional idea, but now we're used to it as various kinds of parsing.
Ten years from now, we'll all be writing web applications with monads, but "functional" programming will have moved farther into the future, an people will ask: "Why are there no big applications written using functional languages?"
- dantheman 17y agoI completely disagree. We talk about people using object oriented programming languages all the time. I think the issue is that, there are a "pure" functional programming languages (Lisp, Scheme, Closure, ML etc) and pure OO. People see the value in the functional paradigm but they don't want to give up the benefits of OO so we are are seeing a convergence where the language supports elements from both paradigms, and in general people don't look at that as functional language. I'd say javascript is a good mix between OO and functional.
- Hexstream 17y agoBy the way, Common Lisp is neither "pure" functional nor not-OO. It's a multi-paradigm language that supports imperative, functional, object-oriented, language-oriented, etc. Google for CLOS, the Common Lisp Object System. I'd say it's more "pure OO" than most so-called object systems in use to day. Haskell would count as purely functional, not Lisp.
- dantheman 17y agoAgreed -- I've read the art of the metaobject protocol. But when most people think of functional programming they think of lisp, and this was about perception and not technical accuracy.
- asolove 17y agoBut what is the meaning of "pure" here? Stretching back over the last forty years of Lisp, then Prolog, etc., it's a moving target. "Pure" once meant using routines instead of GOTO. Then it meant structured instead of GOTO. Then recursion rather than iteration, followed by structured recursion with fold rather than explicit recursion. Most recently, it meant first-class functions. Read a lot of papers from the 90's and you'll see this being used as the definition of a real functional language. And lambdas and currying. Now that we've all seen the power these things give, us, they're now mainstream and we have a new definition of "functional programming" in terms of type-controlled effects.