Si se entera de cálculo lambda, que probablemente ya sabe que λxy.y arg1 arg2 * * reducirá a arg2, ya que la x se sustituye por nada, y el resto (λy.y) es la identidad función.
Puede escribir cero de muchas otras maneras (es decir, presentar una convención diferente), pero hay buenas razones para usar λxy.y. Por ejemplo, quiere que cero sea el primer número natural, de modo que si aplica la función sucesora a él, obtiene 1, 2, 3 etc. Con la función λabc.b (abc), obtiene λxy.x (y), λxy.x (x (y)), λxy.x (x (x (y))) etc., en otras palabras, obtienes un sistema de números enteros.
Además, desea que cero sea el elemento neutral con respecto a la suma. Con nuestra función sucesor S: = λabc.b (abc), podemos definir n + * m * como n S m, es decir, n veces la aplicación de la función sucesor m. Nuestro cero λxy.y satisface esto, tanto 0 S m y m S 0 reducen a m.
Esta es una pregunta relacionada que hice en grupos de google: decir que tengo una función f. ¿Cómo muestro que esto se traduce en un número natural 0? ¿Qué otras funciones necesito para deducir que mi función f se comporta como un 0? – unj2
Si desea probar que una función 'f' es cero con la codificación habitual, debe mostrar eso para todo' g' (f g x) == x. No necesitas saber nada más allá de esto. –