私はプログラミングの人生の比較的遅い時期にカリーハワード同形性に出くわしました、そしておそらくこれは私がそれに完全に魅了されることに貢献しています。これは、すべてのプログラミングコンセプトに対して、形式論理に正確な類似物が存在すること、およびその逆が存在することを意味します。これが私の頭のてっぺんからのそのようなアナロジーの「基本的な」リストです:
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