Я столкнулся с изоморфизмом Карри-Ховарда относительно поздно в моей жизни программирования, и, возможно, это способствует тому, что я полностью им очарован. Это означает, что для каждой концепции программирования существует точный аналог в формальной логике, и наоборот. Вот "базовый" список таких аналогий, невдомек:
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
Редактировать:
Вот еще несколько эквивалентностей, собранных из ответов:
function composition | syllogism -- from Apocalisp
continuation-passing | double negation -- from camccann