"Orden de aplicación" y "Orden normal" en cálculo lambda

14

Orden de aplicación: siempre evalúe completamente los argumentos de una función antes de evaluar la función en sí, como -

(λx.x2(λx.(x+1)  2)))(λx.x2(2+1)) (λx.x2(3)) 32  9

Orden normal: la expresión se reduciría desde afuera hacia adentro, como -

(λx.x2(λx.(x+1) 2)) (λx.(x+1)   2)2 (2+1)2 32  9

Sea M=(λx.y (λx.(x  x) λx.(x  x)))

¿Por qué es que en orden aplicativo, bucle infinito, pero en orden normal, M y ?M
My

URL87
fuente
1
¿Has intentado evaluarlos? ¿Es el primer o el segundo caso que no está claro?
Karolis Juodelė
@ KarolisJuodelė: 1st
URL87
1
¿No deberían escribirse las expresiones lambda entre paréntesis para marcar el final de la primera expresión lambda y el comienzo del argumento, por ejemplo:Let M = (λx.y) ((λx.(x x)) λx.(x x))
matematicamente el

Respuestas:

7

es un bucle 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)
solo escribe su argumento dos veces.λx.(x  x)
Karolis Juodelė
fuente
15

(KyΩ)Kyλx.yyΩ=(λx.(xx)λx.(xx))ΩΩΩ

La reducción de orden aplicable debe reducir el argumento de la función a una forma normal, antes de que pueda evaluar la redex de nivel superior. Desde el argumentoΩMMΩMΩ

KyKy(KyΩ)yKyNyN

Este caso ilustra un fenómeno más general: la reducción de orden aplicativo solo encuentra una forma normal si el término se normaliza fuertemente, mientras que la reducción de orden normal siempre encuentra la forma normal si la hay. Esto sucede porque el orden aplicativo siempre evalúa completamente los argumentos primero y, por lo tanto, pierde la oportunidad de que un argumento no se utilice; mientras que el orden normal evalúa los argumentos lo más tarde posible, por lo que siempre gana si el argumento no se utiliza.

(La otra cara es que el orden aplicativo tiende a ser más rápido en la práctica, porque es relativamente raro que un argumento no se use; mientras que es común que un argumento se use varias veces, y bajo orden aplicativo el argumento solo se evalúa una vez. Normal El orden evalúa el argumento con la frecuencia que se usa, ya sea 0, 1 o muchas veces).

Gilles 'SO- deja de ser malvado'
fuente
KyNNy
Karolis Juodelė