Я пришел к Изоморфизму Карри-Говарда относительно поздно в моей жизни программирования, и, возможно, это способствует тому, что я полностью очарован этим. Это означает, что для каждой концепции программирования существует точный аналог в формальной логике и наоборот. Вот "базовый" список таких аналогов, с верхней части головы:
program/definition | proof
type/declaration | proposition
inhabited type | theorem/lemma
function | implication
function argument | hypothesis/antecedent
function result | conclusion/consequent
function application | modus ponens
recursion | induction
identity function | tautology
non-terminating function | absurdity/contradiction
tuple | conjunction (and)
disjoint union | disjunction (or) -- corrected by Antal S-Z
parametric polymorphism | universal quantification
Итак, на мой вопрос: какие из наиболее интересных/неясных последствий этого изоморфизма? Я не логик, поэтому я уверен, что я только поцарапал поверхность этим списком.
Например, здесь есть некоторые понятия программирования, для которых я не знаю правильных имен в логике:
currying | "((a & b) => c) iff (a => (b => c))"
scope | "known theory + hypotheses"
И вот несколько логических понятий, которые я не совсем применил в терминах программирования:
primitive type? | axiom
set of valid programs? | theory
Edit:
Вот еще несколько эквивалентов, собранных из ответов:
function composition | syllogism -- from Apocalisp
continuation-passing | double negation -- from camccann