Pregunta

en el cálculo lambda (λ x. Λ y λ s.. Λ z. X s (y s z)) se utiliza para la adición de dos números de la Iglesia, ¿cómo podemos explicar esto, ¿hay algún buen recurso el cálculo lambda para la programación funcional? su ayuda es muy apreciada

¿Fue útil?

Solución

En realidad f1 λ. f2 λ. λ s. λ z. (F1 s (f2 s z)) calcula además porque es en efecto sustituyendo (f2 s z), el número representado por f2, en el interior (f1 s z) "cero".

Ejemplo: Tomemos dos para f2, s s z en forma expandida. f1 es uno: s z. Sustituir a la última z por f2 y se obtiene s s s z, la forma expandida para tres.

Esto sería más fácil con una pizarra y agitando la mano, lo siento.

Otros consejos

En el cálculo lambda, que código de un tipo de datos en términos de las operaciones que induce. Por ejemplo, un valor booleano es un sólo una función de elección que toma en entrada dos valores a y b y, o bien devuelve una o b:

                      true = \a,b.a   false = \a,b.b

¿Cuál es el uso de un número natural? Su principal objetivo es computacional proporcionar un límite a iteración. Así, codificamos un número natural como un operador que toma en la entrada una función f, un valor x, e iterar la aplicación de f en x para n veces:

                        n = \f,x.f(f(....(f x)...))

con n apariciones de f.

Ahora, si quiere repetir n + m veces la función f a partir de x debe iniciar la iteración n veces, es decir (n f x), y luego iterar para m veces adicionales, a partir del resultado anterior, es decir

                                m f (n f x)

Del mismo modo, si desea repetir m veces n * necesita para iterar m veces el funcionamiento de la iteración n veces f (como en dos bucles anidados), que es

                                 m (n f) x  

La codificación anterior de los tipos de datos se explica más formalmente en términos de constructores y eliminadores correspondientes (el llamado codificación Bohm-Berarducci).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top