La versión corta de la de Curry-Howard correspondencia es: interpretar un tipo como una proposición, interpretar el tipo de función $a\to b$ " $a$ implica $b$". Interpretar el tipo de producto $a\times b$ como"$a$$b$". Interpretar los distintos tipos de unión $a \sqcup b$ " $a$ o $b$ (o ambos)".
Entonces, por ejemplo, el tipo de la $K$ combinator, $a\to(b\to a)$, se interpreta como la proposición de que si conocemos $a$, entonces si sabemos $b$ podemos concluir $a$. O el tipo de programa que recibe un par $(a,b)$ y vuelve $b$$a\times b\to b$, y este es el teorema que dice que si usted puede probar $a$$b$, entonces usted tiene una prueba de $b$, generalmente por escrito $a\land b\to b$.
(En el lenguaje Haskell, $a\times b$ es anotada (a,b)
y $a\sqcup b$ es anotada Either a b
.)
La función sucesor es un poco tonto, porque el tipo es un trivial teorema. El tipo de $\Bbb N$ es conocido para ser habitada, porque contiene constantes como 0. Estos tipos corresponden a las proposiciones que son conocidos para ser verdad. Por ejemplo, hay un programa, escrito 0
, con el tipo de $\Bbb N$, y esto es de hecho un teorema. Por lo que el sucesor función del tipo, ${\Bbb N}\to{\Bbb N}$, sólo dice que $\Bbb N$ implica $\Bbb N$, que no es muy interesante. Quizás un poco más interesante es el teorema $a\to \Bbb N$, lo que corresponde al programa de $\lambda a. 13$.
Hay más a la correspondencia de que tipos son los teoremas de la lógica. Lo más importante es que un programa con un cierto tipo corresponde a una prueba de la correspondiente teorema. Evaluación del programa corresponde a la eliminación de la "corte" de la regla de la prueba. Puramente funcional de los programas corresponden a los teoremas de intuitionistic lógica, sino imprescindible programas corresponden a los teoremas de la lógica clásica, que es más fuerte. Doble negación corresponde a excepción de la manipulación. El teorema de Glivenko, que dice que cualquier teorema de la lógica clásica tiene un intuitionistic analógica, corresponde a la implementación de un imperativo programa en un lenguaje funcional en consonancia con el estilo de pases.
Le recomiendo que lea Morten Heine Sørensen y Paweł Urzyczyn de Conferencias sobre el Curry-Howard Isomorfismo para los detalles completos.
También potencialmente interesante: esta respuesta se construye un programa con el tipo de $\lnot\lnot(P\lor\lnot P)$.