Functional programming is a paradigm which attempts to solve computational problems by the chained evaluation of functions whose output is determined by their inputs rather than the programme state. In this style of programming, side effects and mutable data are deprecated and usually strictly isolated.
The disciplines of functional programming can be applied in almost any language, but in many imperative languages the resulting code is inelegant and verbose. A growing set of programming languages have been developed explicitly to enable expressive functional coding, including
- Lisp and its many dialects (e.g. Scheme, Clojure)