¿Qué son los combinadores de SKI?

Directamente de este artículo:

Devuelvo su argumento:

I x = x

K , cuando se aplica a cualquier argumento x , produce una función constante de un argumento K x , que, cuando se aplica a cualquier argumento, devuelve x :

K xy = x

S es un operador de sustitución. Toma tres argumentos y luego devuelve el primer argumento aplicado al tercero, que luego se aplica al resultado del segundo argumento aplicado al tercero. Mas claro:

S xyz = xz ( yz )

Así que aquí hay tres combinadores diferentes. No hago nada, pero devuelvo lo que le pasas, K toma dos argumentos y devuelve el primero como resultado, y S toma tres argumentos, toma el primero, lo aplica al tercero y luego aplica el resultado al resultado. resultado del segundo aplicado al tercero.

Veamos cómo estos tres combinadores pueden invertir un par de símbolos.

S ( K ( SI )) K αβ

Esta expresión revertirá la αβ que se pasó como argumentos. Primero evaluamos el S más a la izquierda aplicando K ( SI ) a α, que son los argumentos primero y tercero del primer S, y luego aplicando el resultado al resultado de K α:

K ( SI ) α ( K α) β

Ahora evaluamos la K (SI) a izquierda, que nos da la SI, como se puede ver en la definición. Independientemente de y, que es en este caso α, K devolverá x, que es SI:

SI ( K α) β

Ok, definitivamente estamos llegando a algún lado aquí. Así que ahora evaluamos la S izquierda. Tiene los argumentos I, Kα, β, entonces aplica I a β, y lo aplica al resultado de aplicar Kα a β:

I β ( K αβ)

Evalúe la izquierda I, obtenemos solo β y la derecha Kαβ devuelve α, por lo que obtenemos nuestra expresión inversa

βα

En general, no es muy productivo, pero aquí tienes.

More Interesting

¿Cómo hago para hacer investigación de pregrado en CS?

¿Cómo se usan las matemáticas discretas en los juegos?

¿Puedes dar un valor a un puntero como * p = 5?

¿Cuáles son las funciones más utilizadas en R?

Cómo hacer un programa en c ++ que pueda factorizar un número de 10 dígitos

¿Es la formación lineal la mejor producción de clasificación?

Informática teórica: ¿son todos los lenguajes P decidibles? ¿Son todos los idiomas NP decidibles?

Int a [6] = {1,2,4,5,}; ¿Es correcta esta afirmación en el concepto de matrices?

¿Qué proyecto utilizando la teoría de grafos sería apropiado para una tesis de licenciatura de CS?

¿Qué partes de las matemáticas son necesarias para que un ingeniero informático las entienda? Específicamente, ¿cuánto cálculo debe saber un ingeniero informático?

En términos absolutos, ¿qué son los transistores y los semiconductores?

Estoy interesado en algoritmos. Planeo hacer una maestría en informática teórica en una de las 20 mejores universidades. ¿Cuán significativamente ayudará a hacerme digno de la industria?

Tienes 25 caballos y quieres elegir los 3 caballos más rápidos de esos 25. En cada carrera, solo 5 caballos pueden correr al mismo tiempo porque solo hay 5 pistas. ¿Cuál es el número mínimo de carreras requeridas para encontrar los 3 caballos más rápidos sin usar un cronómetro?

¿Cuáles son las similitudes y diferencias entre recursividad e iteración?

¿Cuál es el papel de las matemáticas en la programación de computadoras?