在我的编程生涯中,我相对较晚才接触到 柯里-霍华德同构,这也许是我完全被它所吸引的原因之一。它意味着,对于每一个编程概念,在形式逻辑中都存在一个精确的类比,反之亦然。下面是我脑海中的一个“基本”类比列表:
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