Variable names are not needed if using a universal lambda function, such as Iota and Jot , which can create any function behavior by calling it on itself in various combinations.

Lambda calculus is Turing complete , that is, it is a universal model of computation that can be used to simulate any Turing machine .^{[1]} Its namesake, the Greek letter lambda (λ), is used in lambda expressions and lambda terms to denote binding a variable in a function .

Lambda calculus may be untyped or typed . In typed lambda calculus, functions can be applied only if they are capable of accepting the given input's "type" of data. Typed lambda calculi are weaker than the untyped lambda calculus, which is the primary subject of this article, in the sense that typed lambda calculi can express less than the untyped calculus can, but on the other hand typed lambda calculi allow more things to be proven; in the simply typed lambda calculus it is, for example, a theorem that every evaluation strategy terminates for every simply typed lambda-term, whereas evaluation of untyped lambda-terms need not terminate. One reason there are many different typed lambda calculi has been the desire to do more (of what the untyped calculus can do) without giving up on being able to prove strong theorems about the calculus.

Lambda calculus has applications in many different areas in mathematics , philosophy ,^{[2]} linguistics ,^{[3]} ^{[4]} and computer science .^{[5]} Lambda calculus has played an important role in the development of the theory of programming languages . Functional programming languages implement the lambda calculus. Lambda calculus is also a current research topic in Category theory .^{[6]}

History
The lambda calculus was introduced by mathematician Alonzo Church in the 1930s as part of an investigation into the foundations of mathematics .^{[7]} ^{[a]} The original system was shown to be logically inconsistent in 1935 when Stephen Kleene and J. B. Rosser developed the Kleene–Rosser paradox .^{[8]} ^{[9]}

Subsequently, in 1936 Church isolated and published just the portion relevant to computation, what is now called the untyped lambda calculus.^{[10]} In 1940, he also introduced a computationally weaker, but logically consistent system, known as the simply typed lambda calculus .^{[11]}

Until the 1960s when its relation to programming languages was clarified, the lambda calculus was only a formalism. Thanks to Richard Montague and other linguists' applications in the semantics of natural language, the lambda calculus has begun to enjoy a respectable place in both linguistics^{[12]} and computer science.^{[13]}

Origin of the lambda symbol
There is a bit of controversy over the reason for Church's use of the Greek letter lambda (λ) as the notation for function-abstraction in the lambda calculus, perhaps in part due to conflicting explanations by Church himself. According to Cardone and Hindley (2006):

By the way, why did Church choose the notation “λ”? In [an unpublished 1964 letter to Harald Dickson] he stated clearly that it came from the notation “${\hat {x}}$ ” used for class-abstraction by Whitehead and Russell , by first modifying “${\hat {x}}$ ” to “∧$x$ ” to distinguish function-abstraction from class-abstraction, and then changing

Lambda calculus may be untyped or typed . In typed lambda calculus, functions can be applied only if they are capable of accepting the given input's "type" of data. Typed lambda calculi are weaker than the untyped lambda calculus, which is the primary subject of this article, in the sense that typed lambda calculi can express less than the untyped calculus can, but on the other hand typed lambda calculi allow more things to be proven; in the simply typed lambda calculus it is, for example, a theorem that every evaluation strategy terminates for every simply typed lambda-term, whereas evaluation of untyped lambda-terms need not terminate. One reason there are many different typed lambda calculi has been the desire to do more (of what the untyped calculus can do) without giving up on being able to prove strong theorems about the calculus.

Lambda calculus has applications in many different areas in mathematics , philosophy ,^{[2]} linguistics ,^{[3]} ^{[4]} and computer science .^{[5]} Lambda calculus has played an important role in the development of the theory of programming languages . Functional programming languages implement the lambda calculus. Lambda calculus is also a current research topic in Category theory .^{[6]}

The lambda calculus was introduced by mathematician Alonzo Church in the 1930s as part of an investigation into the foundations of mathematics .^{[7]} ^{[a]} The original system was shown to be logically inconsistent in 1935 when Stephen Kleene and J. B. Rosser developed the Kleene–Rosser paradox .^{[8]} ^{[9]}

Subsequently, in 1936 Church isolated and published just the portion relevant to computation, what is now called the untyped lambda calculus.^{[10]} In 1940, he also introduced a computationally we

Subsequently, in 1936 Church isolated and published just the portion relevant to computation, what is now called the untyped lambda calculus.^{[10]} In 1940, he also introduced a computationally weaker, but logically consistent system, known as the simply typed lambda calculus .^{[11]}

Until the 1960s when its relation to programming languages was clarified, the lambda calculus was only a formalism. Thanks to Richard Montague and other linguists' applications in the semantics of natural language, the lambda calculus has begun to enjoy a respectable place in both linguistics^{[12]} and computer science.^{[13]}

There is a bit of controversy over the reason for Church's use of the Greek letter lambda (λ) as the notation for function-abstraction in the lambda calculus, perhaps in part due to conflicting explanations by Church himself. According to Cardone and Hindley (2006):

By the way, why did Church choose the notation “λ”? In [an unpublished 1964 letter to Harald Dickson] he stated clearly that it came from the notation “$$ ${\hat {x}}$ ” used for class-abstraction by Whitehead and Russell , by first modifying “${\hat {x}}$ ” to “∧$x$ ” to distinguish function-abstraction from class-abstraction, and then changing “∧” to “λ” for ease of printing.

This origin

This origin was also reported in [Rosser, 1984, p.338]. On the other hand, in his later years Church told two enquirers that the choice was more accidental: a symbol was needed and λ just happened to be chosen.

Dana Scott has also addressed this controversy in various public lectures.^{[14]}
Scott recounts that he once posed a question about the origin of the lambda symbol to Church's son-in-law John Addison, who then wrote his father-in-law a postcard:

<

Dear Professor Church,

Russell had

Russell had the iota operator , Hilbert had the epsilon operator . Why did you choose lambda for your operator?

According to Scott, Church's entire response consisted of returning the postcard with the following annotation: "eeny, meeny, miny, moe ".

Computable functions are a fundamental concept within computer science and mathematics. The lambda calculus provides a simple semantics for computation, enabling properties of computation to be studied formally. The lambda calculus incorporates two simplifications that make this semantics simple.
The first simplification is that the lambda calculus treats functions "anonymously", without giving them explicit names. For example, the function

$\operatorname {square\_sum} (x,y)=x^{2}+y^{2}$
can be rewritten in anonymous form as

$(x,y)\mapsto {x}^{2}$ can be rewritten in anonymous form as

$(x,y)\mapsto x^{2}+y^{2}$
(read as "a tuple of x and y is mapped to $x}^{$

(read as "a tuple of x and y is mapped to ${\textstyle x^{2}+y^{2}}$ "). Similarly,

$\operatorname {id} (x)=x$
can be rewritten in anonymous form as

$$ $x\mapsto x$
where the input is simply mapped to itself.

The second simplification is that the lambda calculus only uses functions of a si

where the input is simply mapped to itself.

The second simplification is that the lambda calculus only uses functions of a single input. An ordinary function that requires two inputs, for instance the ${\textstyle \operatorname {square\_sum} }$