I'm confused by their "3 part linked list". I always thought the elegance of lambda calculus was that each data structure was equivalent to the method by which you use it. A boolean is a function that does a conditional statement. A number is a function that does a loop. So logically, a list is a function that does a fold, like "LIST :: (a -> b -> a) -> a -> a".