Tomáš Petříček, 204 (2nd floor)
petricek@d3s.mff.cuni.cz
@tomasp.net
https://tomasp.net



LISP was not based on the lambda calculus, despite using the word "LAMBDA" to denote functions. ... McCarthy was aware of (Church 1941) but had not studied it.



Two proposed additions
to IAL (later Algol)
1. Conditional expression
2. Recursive functions
The first was added, the second not forbidden

LAMBDA in the lattergotomaplist

Theory of recursive functions
Refernece to partial recursive functions
Universal function
eval function - first theoretical idea, later implemented
(No reference to ADES)



a assigned 2 inside gf is then returneda assigned 0 before calling it

I must confess that I regarded this difficulty as just a bug and expressed confidence that Steve Russell would soon fix it. He did fix it, but by inventing the so-called FUNARG device that took the lexical environment along with the functional argument.
(McCarthy, 1978)

We represent the value of a \(\lambda\)-expression by a bundle of information called a "closure," comprising the \(\lambda\)-expression and the environment relative to which it was evaluated.

goto and returns?van Wijngaarden (1964): "Provide each procedure declaration with an extra formal parameter... and insert at the end [goto] leading to that formal parameter."
Many names for the concept: Landin (1964) SECD "dump", Mazurkiewicz (1969) "tail function", Morris (1970) "label values", Abdali (1973) "program remainder"
Wadsworth (1970) "Once I'd coined the word [continuation] it all clicked and the rest followed."





From Roger Penrose via Mervy Pragnell's reading group


(% ... %) akin to FUNARG



Backus, Turing Award lecutre (1978)
Just as structured programming eschews many control statements to obtain programs with simpler structure, better properties, and uniform methods for understanding their behavior, so functional programming eschews the lambda expression, substitution, and multiple function types.
Functional programming terminology, but talks about algebra of programs and formal reasoning


In short, the article is a progress report on a valid research effort but suffers badly from aggressive overselling of its significance, long before convincing results have been reached. This is the more regrettable as it has been published by way of Turing Award Lecture.

Lazy, purely functional programming languages
Purely functional, non-strict language with
Hindley–Milner polymorphism in one system
Program is a function, mostly follows Miranda,
Type classes as a main additional novelty





