Functional programming

From WikiMD's Wellness Encyclopedia

Functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming paradigm, which emphasizes changes in state.

History[edit | edit source]

Functional programming has its roots in lambda calculus, a formal system developed in the 1930s to investigate function definition, function application, and recursion. Many functional programming languages can be viewed as elaborations on the lambda calculus. In the 1950s, the first functional programming language, Lisp, was created by John McCarthy at the Massachusetts Institute of Technology (MIT).

Concepts[edit | edit source]

Functional programming languages are typically designed around the following key concepts:

First-class and higher-order functions[edit | edit source]

In functional programming, functions are first-class citizens, meaning that they can be passed as arguments to other functions, returned as values from other functions, and assigned to variables. Higher-order functions are functions that take other functions as their arguments or return them as results.

Pure functions[edit | edit source]

A function is called pure if it always returns the same result given the same arguments (it is deterministic) and does not cause any observable side effects (such as modifying a global object or a variable).

Immutability[edit | edit source]

Functional programming languages favor immutable data structures. Once created, data structures are never changed in place. If a change is needed, a new data structure is created instead. This can help avoid issues of data changes in a multi-threaded environment and leads to easier reasoning about program behavior.

Recursion[edit | edit source]

Functional languages primarily rely on recursion to perform looping or iterative behavior, as opposed to the typical loop constructs seen in imperative languages.

Lazy evaluation[edit | edit source]

Lazy evaluation is an evaluation strategy which delays the evaluation of an expression until its value is actually needed. This can help improve performance and allows the creation of infinite data structures.

Languages[edit | edit source]

Some well-known functional programming languages include Haskell, Scheme, Clojure, and Erlang. Each of these languages emphasizes different aspects of functional programming.

Applications[edit | edit source]

Functional programming is particularly useful in scenarios where immutability, concurrency, and determinism are important. It is widely used in academic settings and industries such as finance, where precise algorithms are critical. Additionally, functional programming concepts have influenced the development of many modern programming languages, including JavaScript, Python, and Ruby.

See also[edit | edit source]

Further reading[edit | edit source]

  • Structure and Interpretation of Computer Programs
  • Purely Functional Data Structures
WikiMD
Navigation: Wellness - Encyclopedia - Health topics - Disease Index‏‎ - Drugs - World Directory - Gray's Anatomy - Keto diet - Recipes

Search WikiMD

Ad.Tired of being Overweight? Try W8MD's physician weight loss program.
Semaglutide (Ozempic / Wegovy and Tirzepatide (Mounjaro / Zepbound) available.
Advertise on WikiMD

WikiMD's Wellness Encyclopedia

Let Food Be Thy Medicine
Medicine Thy Food - Hippocrates

WikiMD is not a substitute for professional medical advice. See full disclaimer.
Credits:Most images are courtesy of Wikimedia commons, and templates Wikipedia, licensed under CC BY SA or similar.

Contributors: Prab R. Tumpati, MD