Difference between revisions of "Lambda calculus"

From apm
Jump to: navigation, search
(basic page – factored out from the page: Annotated lambda diagrams – plus a bit of cleanup)
 
Line 35: Line 35:
 
Smack in the middle of between textual and visual programming. <br>
 
Smack in the middle of between textual and visual programming. <br>
 
See main page: [[Annotated lambda diagrams]]
 
See main page: [[Annotated lambda diagrams]]
 +
 +
== Related ==
 +
 +
* {{speculativity warning}} – [[The program that constructs and executes all possible programs]]

Revision as of 11:05, 11 July 2021

Lambda calculus – it's basic rules are unbelievably simple and it can compute anything and everything =

Lambda diagrams are a way to visualize lambda calculus.
Lambda calculus is an extremely simple formalism that is equally expressive to the (much more widely known) Turing machine.
That is: Lambda calculus is "Turing complete".
Any program that is in principle logically possible can be written in Lambda calculus.
A maximally universal computer. At least that is what is the current (2021) consensus on the topic.

The special thing about lambda calculus is that:
Lambda calculus is used very much unchanged as the core of a number of practical programming languages.
Perhaps more so than the Truing machine is.
("practical programming languages" meaning programming languages that are in use in practical applications to a quite notable degree.)

Graphical visualizations for lambda calculus

There are a number of graphical visualizations for Lambda calculus.
The most straightforward one is just to plot out the syntax tree.
There are only three types of elements in the syntax tree of lambda calculus:

  • abstractions
  • applications
  • variables

It's as simple as that.
Well, adding evaluation strategies and a type system makes it a bit more complicated.
But that is the basic gist.

Plain lambda diagrams (PLDs)

An especially nice visualization for lambda calculus are (unannotated) "lambda diagrams".
These are presented by John Tromp on his homepage here: https://tromp.github.io/cl/diagrams.html

Annotated lambda diagrams (ALDs)

Adding some annotations to lambda diagrams may make these into an amazing programming interface with some awesome properties.
Smack in the middle of between textual and visual programming.
See main page: Annotated lambda diagrams

Related