O termo que você está reduzindo é onde K y é a função constante λ x . y (sempre retorna y , ignorando seu argumento) e Ω = ( λ x . ( x( KyΩ )Kyλ x . yy é um termo que não termina. Em certo sentido, Ω é o termo não terminante final: ele se reduz beta a si próprio, ou seja, Ω → Ω . (Certifique-se de elaborá-lo em papel pelo menos uma vez na vida.)Ω = ( λ x . ( Xx )λ x . ( xx ) )ΩΩ → Ω
A redução de pedido aplicável deve reduzir o argumento da função para uma forma normal, antes de poder avaliar o redex de nível superior. Como o argumento não tem forma normal, a redução da ordem do aplicativo é executada em loop infinitamente. Mais geralmente, para qualquer termo M , M Ω → M Ω , e essa é a redução escolhida pela estratégia de ordem aplicativa.ΩMMΩ → MΩ
KyKy( KyΩ ) → yKyN→ yN
Este caso ilustra um fenômeno mais geral: a redução da ordem aplicativa somente encontra uma forma normal se o termo estiver normalizando fortemente, enquanto a redução normal da ordem sempre encontra a forma normal se houver uma. Isso acontece porque a ordem do aplicativo sempre avalia os argumentos completos primeiro e, portanto, perde a oportunidade de um argumento não ser utilizado; enquanto a ordem normal avalia os argumentos o mais tarde possível e, portanto, sempre vence se o argumento não for utilizado.
(O lado oposto é que a ordem do aplicativo tende a ser mais rápida na prática, porque é relativamente raro um argumento não ser usado; ao passo que é comum que um argumento seja usado várias vezes e, na ordem do aplicativo, o argumento é avaliado apenas uma vez. Normal order avalia o argumento quantas vezes for usado, seja 0, 1 ou várias vezes.)