lambda-calculus ((λx.(xb))E) (Eb) Learning from 2swap and Wikipedia brew install uv uv run main.py uvx pytest