Churchâ€™s Thesis and Functional Programming

The lambda-calculus, which Church developed during the period of convergence from which the Thesis emerged, has influenced almost every aspect of the development of programming and programming languages. It is the basis of functional programming, which after a long infancy is entering adulthood as a practical alternative to traditional ad-hoc imperative programming languages. Many important ideas in mainstream programming languagesâ€”recursion, procedures as parameters, linked lists and trees, garbage collectors â€” came by cross fertilization from functional programming. Moreover the main schools of both operational and denotational semantics are lambda-calculus based and amount to using functional programming to explain other programming systems.

The original project from whose wreckage by paradox lambda-calculus survived, to unify logic with an account of computable functions, appears to have been reborn in unexpected form, via the propositions-as-types paradigm.

Many of the PLT topics mentioned on LtU are covered - PLT in 20 pages or less. I'm still hoping for someone to publish a pop-PLT book that takes something like these 20 pages and turns them into a 800 page novel. In the meantime, this is a nice roadmap for PLT that helps provide the connections between such things as Curry-Howard, Coq, System F. (About as close to a cheatsheet for LtU that I've come across).

Comment viewing options

This thing is awesome! It most definitely belongs at the top of the "Getting Started" page, IMHO, as it is indeed an excellent summary of what many (most?) of us discuss here. I'll no doubt refer to it often as I muddle through my self-study efforts.

What we get from untyped [lambda]-calculus, or a typed calculus with N and general recursion, are the sequential functions. To get all computable partial functions at every type we must add primitives expressing interleaving or concurrency. In fact just the two above are sufficient. [p. 13]

the author means concurrency is beyond lambda calculus. also, does he mean interleaving and concurrency are synonymous or does he mean either of the two will suffice?

What the author means, in this case, is that there is no way in lambda-calculus to write the function "or" which takes two booleans and returns a boolean, in such a way that it terminates successfully if either of the two inputs terminates with a "True" result.

"Parallel or" solves this problem; conceptually, parallel-or begins executing both x and y in parallel, and as soon as either of them terminates with a True result, the other result is no longer needed and we can stop trying to calculate it. This isn't possible in lambda calculus without this additional primitive.

David Turner claims that Martin-LÃ¶f's type theory has the strong-normalisation property: in the presence of predicative universes there are terms with weak-head normal forms but not full normal forms.

I finally got around to this. I agree it's a really excellent survey and is a great place to start. It says it's from Church's Thesis after 70 Years, and makes some tantalizing references to other articles in the same volume. Sadly, the book has a pretty hefty price tag, and I'm curious if anyone has actually seen it, and whether the rest of the book is equally good...