Saya menemukan Curry-Howard Isomorphism relatif terlambat dalam kehidupan pemrograman saya, dan mungkin ini berkontribusi pada saya yang benar-benar terpesona olehnya. Ini menyiratkan bahwa untuk setiap konsep pemrograman terdapat analog yang tepat dalam logika formal, dan sebaliknya. Berikut adalah daftar "dasar" dari analogi semacam itu, di luar kepala saya:
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
Jadi, untuk pertanyaan saya: apa saja implikasi yang lebih menarik / tidak jelas dari isomorfisme ini? Saya bukan ahli logika jadi saya yakin saya hanya menggores permukaannya dengan daftar ini.
Sebagai contoh, berikut adalah beberapa pengertian pemrograman yang saya tidak tahu nama-nama bernas dalam logikanya:
currying | "((a & b) => c) iff (a => (b => c))"
scope | "known theory + hypotheses"
Dan berikut adalah beberapa konsep logis yang belum saya jelaskan dalam istilah pemrograman:
primitive type? | axiom
set of valid programs? | theory
Edit:
Berikut adalah beberapa persamaan lagi yang dikumpulkan dari tanggapan:
function composition | syllogism -- from Apocalisp
continuation-passing | double negation -- from camccann