I'm taking a programming languages course concurrent with yours and hearing this material explained another way has helped me tremendously. Thank you for your work
Hi there--I think it is not right to say that there is no practical relevance because in an assembly language you could load a register. To say so is to imply that only typical CPU-based architectures matter. The relevance of Church encodings to computing is in its demonstration of the Turing-completeness of the lambda calculus, which is the "assembly language" of functional programming. It is true it is an arbitrary choice, but no more arbitrary choice than taking assembly language as the basis for your computation. For example, if you have only assembly language, you do not have higher-order functions. You can implement higher-order functions by using an encoding, dynamically-allocated memory, and similar techniques--but assembly by itself does not provide you with the means to express higher-order functions in their full generality. It would, of course, be possible demonstrate this--that is what the core of functional compilers do (e.g., conversion to CPS or A-Normal form, which have a deep connection to instruction-level assembly), but such an encoding is unfortunately beyond the scope of an undergraduate course.
Thank you so much for the lecture. finally lambda calculus is making some sense to me. Really crisp and to the point lecture.
I'm taking a programming languages course concurrent with yours and hearing this material explained another way has helped me tremendously. Thank you for your work
That class is taught by Gilray, btw. I just found out you two have worked together before (on C++ HAMT at the very least).
Thanks for the video. It helped me get through another section of SICP. It also makes me feel pretty smart knowing how to do this :^).
Excellent video. It has really helped me a lot to better understand Lambda Calculus as a whole! Thank you!!
A day before the exam at 1.25x speed.Thank you for these uploads.
I was looking for a nice explanation like this for a week now and I finally found it, thank you so much!!!🥰
Thank you so much! Really appreaciate your clear explanation (And the record and edit of the video is awesome!).
Thank you so much for your explanation!!
I believe the definition of "multiplication" is wrong. The definition in this video is actually for "exponentiation".
Couldn't we implement the plus function using the "succ" function we defined earlier?
Does this have any practical relevance? I am wondering why would anybody do this instead of putting an immediate value into a register: `mov ax, 3`
Hi there--I think it is not right to say that there is no practical relevance because in an assembly language you could load a register. To say so is to imply that only typical CPU-based architectures matter. The relevance of Church encodings to computing is in its demonstration of the Turing-completeness of the lambda calculus, which is the "assembly language" of functional programming. It is true it is an arbitrary choice, but no more arbitrary choice than taking assembly language as the basis for your computation. For example, if you have only assembly language, you do not have higher-order functions. You can implement higher-order functions by using an encoding, dynamically-allocated memory, and similar techniques--but assembly by itself does not provide you with the means to express higher-order functions in their full generality. It would, of course, be possible demonstrate this--that is what the core of functional compilers do (e.g., conversion to CPS or A-Normal form, which have a deep connection to instruction-level assembly), but such an encoding is unfortunately beyond the scope of an undergraduate course.