Computing by Constructing
We write a simple, easy-to-read example function in Python. Then, remove Python features one by one, transforming it into the lambda calculus. At the end, there's nothing left except (1) definitions of functions that take exactly one argument and (2) calls to functions with exactly one argument. At the end, there are still some helper functions that use Python features. Next time, we'll remove all of those as well, reimplementing numbers and booleans from scratch using nothing but functions of one argument.