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]

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]

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

First-class and higher-order functions[edit]

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]

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]

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]

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]

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]

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

Applications[edit]

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]

Further reading[edit]

  • Structure and Interpretation of Computer Programs
  • Purely Functional Data Structures


Stub icon
   This article is a computer science stub. You can help WikiMD by expanding it!


Navigation: Wellness - Encyclopedia - Health topics - Disease Index‏‎ - Drugs - World Directory - Gray's Anatomy - Keto diet - Recipes

Ad. Transform your life with W8MD's Budget GLP-1 injections from $75


W8MD weight loss doctors team
W8MD weight loss doctors team

W8MD offers a medical weight loss program to lose weight in Philadelphia. Our physician-supervised medical weight loss provides:

NYC weight loss doctor appointmentsNYC weight loss doctor appointments

Start your NYC weight loss journey today at our NYC medical weight loss and Philadelphia medical weight loss clinics.

Linkedin_Shiny_Icon Facebook_Shiny_Icon YouTube_icon_(2011-2013) Google plus


Advertise on WikiMD

WikiMD's Wellness Encyclopedia

Let Food Be Thy Medicine
Medicine Thy Food - Hippocrates

Medical Disclaimer: WikiMD is not a substitute for professional medical advice. The information on WikiMD is provided as an information resource only, may be incorrect, outdated or misleading, and is not to be used or relied on for any diagnostic or treatment purposes. Please consult your health care provider before making any healthcare decisions or for guidance about a specific medical condition. WikiMD expressly disclaims responsibility, and shall have no liability, for any damages, loss, injury, or liability whatsoever suffered as a result of your reliance on the information contained in this site. By visiting this site you agree to the foregoing terms and conditions, which may from time to time be changed or supplemented by WikiMD. If you do not agree to the foregoing terms and conditions, you should not enter or use this site. See full disclaimer.
Credits:Most images are courtesy of Wikimedia commons, and templates, categories Wikipedia, licensed under CC BY SA or similar.