Difference between revisions of "Lambda calculus"
Karl Jones (Talk | contribs) (etc) |
Karl Jones (Talk | contribs) (→See also) |
||
Line 31: | Line 31: | ||
== See also == | == See also == | ||
− | * [[Alonzo Church]] | + | * [[Alonzo Church|Church, Alonzo]] |
* [[Computation]] | * [[Computation]] | ||
+ | * [[Entscheidungsproblem]] | ||
* [[Mathematical logic]] | * [[Mathematical logic]] | ||
* [[Mathematics]] | * [[Mathematics]] |
Revision as of 16:49, 20 August 2015
Lambda calculus (also written as λ-calculus) is a formal system in mathematical logic for expressing computation based on function abstraction and application using variable binding and substitution.
First formulated by Alonzo Church to formalize the concept of effective computability, lambda calculus found early successes in the area of computability theory, such as a negative answer to Hilbert's Entscheidungsproblem.
Lambda calculus is a conceptually simple universal model of computation.
Alan Turing showed in 1937 that Turing machines equated the lambda calculus in expressiveness.
The name derives from the Greek letter lambda (λ) used to denote binding a variable in a function. The letter itself is arbitrary and has no special meaning.
Lambda calculus is taught and used in computer science because of its usefulness in showcasing functional thinking and iterative reduction.
Because of the importance of the notion of variable binding and substitution, there is not just one system of lambda calculus, and in particular there are typed and untyped variants.
Historically, the most important system was the untyped lambda calculus, in which function application has no restrictions (so the notion of the domain of a function is not built into the system).
In the Church–Turing Thesis, the untyped lambda calculus is claimed to be capable of computing all effectively calculable functions.
The typed lambda calculus is a variety that restricts function application, so that functions can only be applied if they are capable of accepting the given input's "type" of data.
Today, the lambda calculus has applications in many different areas in mathematics, philosophy, linguistics, and computer science.
It is still used in the area of computability theory, although Turing machines are also an important model for computation.
Lambda calculus has played an important role in the development of the theory of programming languages.
Counterparts to lambda calculus in computer science are functional programming languages, which essentially implement the lambda calculus (augmented with some constants and datatypes).
Beyond programming languages, the lambda calculus also has many applications in proof theory.
See also
External links
- Lambda calculus @ Wikipedia