λ learn

Precedencia

Ahora que hemos visto la gramática completa de cálculo lambda, podemos preguntarnos cómo interpretar la expresión λx.xλy.y\lam{x}{\app{x}{\lam{y}{y}}}.

Si agregamos paréntesis, ¿cuáles serían expresiones válidas? $\app{(\lam{x}{x})}{(\lam{y}{y})}$ $(\lam{x}{\app{x}{\lam{y}{)y}}}$ $(\lam{x}{\app{x}{\lam{y)}{y}}}$ $\lam{x}{(\app{x}{\lam{y)}{y}}}$ $\lam{x}{(\app{x}{\lam{y}{y}})}$

En estos casos se usa la convención de precedencia para interpretar la expresión. La convención es que la abstracción tiene menor precedencia que la aplicación. Esto significa que λx.MN\lam{x}{\app{M}{N}} se interpreta como λx.(MN)\lam{x}{(\app{M}{N})}. Notar que esto no depende de si xx aparece o no en MM o NN.

Según la regla de precedencia, ¿cómo se interpreta el término $\lam{x}{\app{x}{\lam{y}{y}}}$? Creemos un árbol sintáctico para la expresión $\lam{x}{\app{x}{\lam{y}{y}}}$ según la convención de precedencia. Creemos un árbol sintáctico para la expresión $\app{(\lam{x}{x})}{(\lam{y}{y})}$.