I always enjoy how lambda calculus suddenly becomes a readable language after the prelude:
let (\n.
let (\m. isZero (mod n m)) \divisibleBy.
if (and (divisibleBy 3) (divisibleBy 5))
then FizzBuzz
else
(if (divisibleBy 3)
then Fizz
else
(if (divisibleBy 5)
then Buzz
else (intToStr n))))
\fizzBuzzStep.
(loop \recurse. \n.
if (equals n 100)
then nil
else (cons (fizzBuzzStep n) (recurse (n+1)))
) 1)
(\letArg letBody. letBody letArg)
let, if, then, else, loop, and even the numbers are all functions.