Lambda calculus: Difference between revisions
imported>Christopher J. Reiss m (small wording changes ~~~~) |
imported>Christopher J. Reiss m (more small word tweaking ~~~~) |
||
Line 2: | Line 2: | ||
In mathematical logic and computer science, the '''lambda calculus''' (also '''λ-calculus''') is a formal system designed to investigate function definition, function application and recursion. Although it was originally intended as a mathematical formalism and predates the electronic computer, it can be seen as the world's first formalized programming language. The programming language [[Lisp]] was created in large part from the λ-calculus. | In mathematical logic and computer science, the '''lambda calculus''' (also '''λ-calculus''') is a formal system designed to investigate function definition, function application and recursion. Although it was originally intended as a mathematical formalism and predates the electronic computer, it can be seen as the world's first formalized programming language. The programming language [[Lisp]] was created in large part from the λ-calculus. | ||
The λ-calculus was introduced by Alonzo Church and Stephen Cole Kleene in the 1930s as part of a larger effort to base the foundation of mathematics upon functions rather than sets (in the hopes of avoiding set-theoretic obstacles like [[Russell's paradox]]). The λ-calculus was ultimately unable to avoid these | The λ-calculus was introduced by Alonzo Church and Stephen Cole Kleene in the 1930s as part of a larger effort to base the foundation of mathematics upon functions rather than sets (in the hopes of avoiding set-theoretic obstacles like [[Russell's paradox]]). The λ-calculus was ultimately unable to avoid these difficulties, but emerged as a powerful tool in the field of Computability, which studies whether certain problems are solvable in a systematic way (such as by computer). Perhaps most famously, it was used to give a negative answer to the Halting Problem in the [[Alonzo Church|Church]]-[[Alan Turing|Turing]] Thesis. | ||
The lambda calculus can be thought of as an idealized, minimalistic programming language. It is a close cousin of the [[Turing machine]], another | The lambda calculus can be thought of as an idealized, minimalistic programming language. It is a close cousin of the [[Turing machine]], another abstraction for modeling computation. The difference between the two is that the lambda calculus takes a functional view of algorithms, while the original Turing machine takes an imperative view. That is, a Turing machine maintains 'state' - a 'notebook' of symbols that can change from one instruction to the next. By contrast, the lambda calculus is stateless, it deals exclusively with functions which accept and return data (including other functions), but produce no side effects in 'state' and do not make alterations to incoming data (immutability.) The functional paradigm can be seen in modern languages like [[Lisp]], [[Scheme]] and [[Haskell]]. | ||
The lambda calculus - and the paradigm of functional programming - is still influential, especially within the artificial intelligence community. | The lambda calculus - and the paradigm of functional programming - is still influential, especially within the artificial intelligence community. |
Revision as of 13:33, 21 February 2008
In mathematical logic and computer science, the lambda calculus (also λ-calculus) is a formal system designed to investigate function definition, function application and recursion. Although it was originally intended as a mathematical formalism and predates the electronic computer, it can be seen as the world's first formalized programming language. The programming language Lisp was created in large part from the λ-calculus.
The λ-calculus was introduced by Alonzo Church and Stephen Cole Kleene in the 1930s as part of a larger effort to base the foundation of mathematics upon functions rather than sets (in the hopes of avoiding set-theoretic obstacles like Russell's paradox). The λ-calculus was ultimately unable to avoid these difficulties, but emerged as a powerful tool in the field of Computability, which studies whether certain problems are solvable in a systematic way (such as by computer). Perhaps most famously, it was used to give a negative answer to the Halting Problem in the Church-Turing Thesis.
The lambda calculus can be thought of as an idealized, minimalistic programming language. It is a close cousin of the Turing machine, another abstraction for modeling computation. The difference between the two is that the lambda calculus takes a functional view of algorithms, while the original Turing machine takes an imperative view. That is, a Turing machine maintains 'state' - a 'notebook' of symbols that can change from one instruction to the next. By contrast, the lambda calculus is stateless, it deals exclusively with functions which accept and return data (including other functions), but produce no side effects in 'state' and do not make alterations to incoming data (immutability.) The functional paradigm can be seen in modern languages like Lisp, Scheme and Haskell.
The lambda calculus - and the paradigm of functional programming - is still influential, especially within the artificial intelligence community.