Some say it is, some say it isn't. Lemme see... (this applies mainly to CommonLisp; SchemeLanguage has a stronger functional tradition).
It is a little silly to say it isn't, because lisp was the original functional language. Otoh, it is pretty easy to see that some lisp variants are not particularly functional today.
- More to the point, much of the CommonLisp community these days isn't terribly interested in the functional aspects of the language. Many aspects of CL, such as CommonLispObjectSystem and the whole MetaObjectProtocol, are rather non-functional. This has causes some FunctionalWeenies (sorry) to suggest that Lisp no longer deserves the term....
- I dare say that most Lispers these days (and possibly even most Schemers) don't give a damn what the FunctionalWeenies think of them. We're just trying to get a job done; we're not interested in religious wars about whose language is more pure. -- SmugLispWeenie
Reasons why LispLanguage is a functional language:
- Supports HigherOrderFunctions, one of the first languages to do so.
- However, some Lisps do it better than others. CommonLisp, by virtue of its separate function namespace, makes things harder than necessary. Old dynamically-scoped Lisp dialects have difficulty with proper lambdas (not being able to capture variables from the enclosing scope at the point of definition).
- It's a MultiParadigmProgrammingLanguage, with FunctionalProgramming as one of the supported paradigms.
Reasons why it isn't.
CategoryLisp