Функция
(define (pred x) x)
является функцией идентификации. Функция принимает значение и связывает его с аргументом x
. Затем он вычисляет тело x
, которое возвращает исходное значение.
Функция
(define (pred x) (x))
принимает в качестве входных данных одно значение и связывает его с аргументом x
. Затем он оценивает тело (x)
. Выражение (x)
означает вызов (мы надеемся, что это функция) x
без аргументов.
(pred (lambda () 42)) will evaluate to 42.
Так что в контексте вашей кодировки (lamdda () x)
оборачивает функциональный слой значением, а (x)
удаляет функциональный слой.