He buscado en Internet, y no encuentro ninguna explicación de CHI que no degenere rápidamente en una conferencia sobre teoría de la lógica que está drásticamente sobre mi cabeza. (Estas personas hablan como si "cálculo intuicionista proposición" es una frase que en realidad significa algo a los seres humanos normales!)Isomorfismo de Curry-Howard
Aproximadamente palabras, CHI dice que los tipos son teoremas, y los programas son pruebas de los teoremas. ¿Pero qué diablos eso incluso significa ??
Hasta ahora, me he dado cuenta de esto:
Considere
id :: x -> x
. Su tipo dice "dado que X es verdadero, podemos concluir que X es verdadero". Parece un teorema razonable para mí.Considera ahora
foo :: x -> y
. Como cualquier programador de Haskell te dirá, esto es imposible. No puedes escribir esta función. (Bueno, sin hacer trampa de todos modos.) Leído como un teorema, dice "dado que cualquier X es verdadera, podemos concluir que cualquier Y es verdadera". Esto es obviamente una tontería. Y, por supuesto, no puedes escribir esta función.De manera más general, los argumentos de la función se pueden considerar "esto que se supone que son verdaderos", y el tipo de resultado se puede considerar "cosa que es verdad asumiendo todas las demás cosas". Si hay un argumento de función, digamos
x -> y
, podemos tomar eso como una suposición de que X es verdadero implica que Y debe ser verdadero.Por ejemplo,
(.) :: (y -> z) -> (x -> y) -> x -> z
se puede tomar como "suponiendo que Y implica Z, que X implica Y, y que X es verdadero, podemos concluir que Z es verdadero". Lo cual parece lógicamente sensato para mí.
Ahora, ¿qué demonios significa Int -> Int
? o_O
La única respuesta sensata que puedo encontrar es esta: si tiene una función X -> Y -> Z, la firma de tipo dice "asumiendo que es posible construir un valor de tipo X y otro de tipo Y, entonces es posible construir un valor de tipo Z ". Y el cuerpo de la función describe exactamente cómo harías esto.
Eso parece tener sentido, pero no es muy interesante. Entonces claramente debe haber más que esto ...
http://stackoverflow.com/questions/2969140/what-are-the-most-interesting-equivalences-arising-from-the-curry-howard-isomorp –
Lea esto antes de publicar esto, y se perdió rápidamente ...: -S – MathematicalOrchid
Para ser justos, la mayoría de los "humanos normales" no buscan el isomorfismo de Curry-Howard ... – amindfv