Я пробираюсь через Типы и языки программирования , и Пирс, для стратегии сокращения по значению, приводит пример термина id (id (λz. id z))
.Внутренний redex id (λz. id z)
сначала уменьшается до λz. id z
, давая id (λz. id z)
в результате первого сокращения, прежде чем внешний redex приведёт к нормальной форме λz. id z
.
Но вызов по значениюпорядок определяется как «сокращаются только самые внешние переопределения», а «переопределение уменьшается только тогда, когда его правая часть уже уменьшена до значения».В примере id (λz. id z)
появляется с правой стороны от внешнего переопределения и уменьшается.Как это соотносится с правилом, согласно которому сокращаются только самые внешние переопределения?
Является ли ответ, что «самые внешние» и «самые внутренние» относятся только к лямбда-абстракциям?Таким образом, для члена t
в λz. t
значение t
не может быть уменьшено, но при переопределении s t
значение t
уменьшается до значения v
, если это возможно, а затем s v
уменьшается?