Scheme and Haskell are two of my favorite programming languages, and I know both are implementations of the lambda calculus. I'd like to learn more about that, but I haven't been able to find good sources. Most of the time I do find it mentioned, it's mentioned in passing, for example in SICP or the Little Schemer.
Some things I'd like to know:
- How to construct lambda functions from Turing machines and vice versa
- How to think about the Y-combinator (this is now almost un-googleable)
- What variants of the lambda calculus have been constructed and what their properties are
- How lambda functions relate to functions in the mathematical sense. Are they the same? Can you call them on real numbers? Are they continuous? Etc
Extra points if you can recommend a full theoretical treatment. I'm interested in really digging in to this topic.
Wikipedia is usually a pretty good place to start for any such question:
https://en.wikipedia.org/wiki/Lambda_calculus
there are a lot of external links and references there.
I don't know if there's a lot of work still being done with the original untyped lambda calculus but typed lambda calculi (or analogous models), on which I believe Haskell is based, are another story.
You may also find this interesting:
https://softwarefoundations.cis.upenn.edu/current/lf-current...
It's an introduction to the coq proof assistant which is based (at least to the best of my understanding) on a kind of typed lambda calculus. In the first few chapters you will learn how to construct the natural numbers and formally (ie. in a machine verifiable way) prove theorems about them.