Comment by kccqzy

Comment by kccqzy 3 days ago

2 replies

The best way to wrap your mind around the core concept and internalize them into a mental model is writing an interpreter yourself. It's been abundantly clear to me since young that for anything involving math, you don't internalize it if you merely passively let someone else explain it, whether that's reading a textbook/blog or attending a professor's lecture or watching a YouTube video. You have to do the exercises.

Lambda calculus is the same. You can easily define the data structure to represent a program in untyped lambda calculus and then write an interpreter for it. Then go implement some interesting concepts such as the Y combinator or the Omega combinator. If you find lambda calculus too difficult to do things like arithmetic or linked lists, you don't have to stick with Church numerals or Scott encodings. Just introduce regular natural numbers and lists as ground types; when you later have a better understanding, write programs to transform regular numerals from and to Church numerals and bask in the fact that they are isomorphic.

anyfoo 3 days ago

Mathematics is not a spectator sport.

I had the luck of reading that quote while I was an undergrad. I did not actually pursue a career in pure math, but it certainly helps me every time I want to understand some math in order to apply it. (Lambda calculus, type systems, Fourier/Laplace/z-transform, ...)

prakashrj 3 days ago

I agree that you have to do the exercises instead of expecting others to explain and walk you through it.

https://www.youtube.com/watch?v=LXhsutNKhec

Just one programming book was able to help my son, who is 12 yrs old, learn lambda calculus and write a meta circular evaluator.