( (n) let 1 (product) let (n 1 >=) ( product n * (product) bind n 1 - (n) bind ) while product ) (factorial) lambda 5 factorial puts pop