«if», «true» и «false» не являются языковыми ключевыми словами со значением, они являются просто (метаязыком) именами функций.
Аналогично, «cond», «then» и «else»«являются параметрами функции;слова ничего не значат.
Я думаю, что на самом деле легче следовать, если вы используете бессмысленные идентификаторы (это просто упражнение с символами).
Определение бессмысленного
a = (λx.(λy.x))
b = (λx.(λy.y))
c = (λx.(λy.(λz.x y z)))
и оцените
c b b a
—> (λx.(λy.(λz.x y z))) b b a
—> (λy.(λz.b y z)) b a
—> (λz.b b z) a
—> b b a
—> (λx.(λy.y)) b a
—> ...
, и в итоге вы получите (λx.(λy.x))
, что является определением "a" ("true").