我在编程生涯中比较晚才接触到Curry-Howard 同构,也许这有助于我对它完全着迷。这意味着对于每个编程概念,在形式逻辑中都存在一个精确的类比,反之亦然。这是我想不到的此类类比的“基本”列表:
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