Você já tentou avaliá-los? É o primeiro ou o segundo caso que não está claro?
precisa saber é o seguinte
@ KarolisJuodelė: 1st
URL87 02/01
1
Não deve as expressões lambda ser escrito com parênteses para marcar o fim da primeira expressão lambda eo início do argumento, por exemplo:Let M = (λx.y) ((λx.(x x)) λx.(x x))
mattgately
Respostas:
7
é um loop infinito porque λ x . ( x x ) λ x . ( x x ) → λ x . ( x x ) λ x . ( x x )
Observe que λ x . ( x( λ x . y( λ x . ( x x ) λ x . ( x x ) ) )
λ x . ( x x ) λ x . ( x x ) → λ x . ( x x ) λ x . ( x x )
apenas escreve seu argumento duas vezes.λ x . ( x x )
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.)
Let M = (λx.y) ((λx.(x x)) λx.(x x))
Respostas:
é um loop infinito porque λ x . ( x x ) λ x . ( x x ) → λ x . ( x x ) λ x . ( x x ) Observe que λ x . ( x( λ x . y ( λ x . ( x x ) λ x . ( x x ) ) )
fonte
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 . y y é 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.Ω M MΩ → MΩ
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.)
fonte