faith, evolution, and programming languages...faith, evolution, and programming languages philip...

42
Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012

Upload: others

Post on 10-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Faith, Evolution, and ProgrammingLanguages

Philip WadlerUniversity of Edinburgh

TechMesh, London4 December 2012

Page 2: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Evolution

Page 3: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Multiculturalism

Page 4: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Part I

Church: The origins of faith

Page 5: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism
Page 6: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism
Page 7: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism
Page 8: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Gerhard Gentzen (1909–1945)

Page 9: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Gerhard Gentzen (1935) — Natural Deduction

Page 10: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Gerhard Gentzen (1935) — Natural Deduction

Page 11: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Gerhard Gentzen (1935) — Natural Deduction

[A]x···B

⊃-IxA⊃B

A⊃B A⊃-E

B

A B&-I

A&B

A&B&-E0

A

A&B&-E1

B

Page 12: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Simplifying a proof

[B & A]z&-E1

A

[B & A]z&-E0

B&-I

A&B⊃-Iz

(B & A)⊃ (A&B)

[B]y [A]x&-I

B & A⊃-E

A&B

Page 13: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Simplifying a proof

[B & A]z&-E1

A

[B & A]z&-E0

B&-I

A&B⊃-Iz

(B & A)⊃ (A&B)

[B]y [A]x&-I

B & A⊃-E

A&B⇓

[B]y [A]x&-I

B & A&-E1

A

[B]y [A]x&-I

B & A&-E0

B&-I

A&B

Page 14: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Simplifying a proof

[B & A]z&-E1

A

[B & A]z&-E0

B&-I

A&B⊃-Iz

(B & A)⊃ (A&B)

[B]y [A]x&-I

B & A⊃-E

A&B⇓

[B]y [A]x&-I

B & A&-E1

A

[B]y [A]x&-I

B & A&-E0

B&-I

A&B⇓

[A]x [B]y&-I

A&B

Page 15: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Alonzo Church (1903–1995)

Page 16: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Alonzo Church (1932) — Lambda calculus

Page 17: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Alonzo Church (1940) — Typed λ-calculus

[x : A]x···

u : B⊃-Ix

λx. u : A⊃B

s : A⊃B t : A⊃-E

s t : B

t : A u : B&-I

〈t, u〉 : A&B

s : A&B&-E0

s0 : A

s : A&B&-E1

s1 : B

Page 18: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Simplifying a program

[z : B & A]z&-E1

z1 : A

[z : B & A]z&-E0

z0 : B&-I

〈z1, z0〉 : A&B⊃-Iz

λz. 〈z1, z0〉 : (B & A)⊃ (A&B)

[y : B]y [x : A]x&-I

〈y, x〉 : B & A⊃-E

(λz. 〈z1, z0〉) 〈y, x〉 : A&B

Page 19: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Simplifying a program

[z : B & A]z&-E1

z1 : A

[z : B & A]z&-E0

z0 : B&-I

〈z1, z0〉 : A&B⊃-Iz

λz. 〈z1, z0〉 : (B & A)⊃ (A&B)

[y : B]y [x : A]x&-I

〈y, x〉 : B & A⊃-E

(λz. 〈z1, z0〉) 〈y, x〉 : A&B

⇓[y : B]y [x : A]x

&-I〈y, x〉 : B & A

&-E1〈y, x〉1 : A

[y : B]y [x : A]x&-I

〈y, x〉 : B & A&-E0〈y, x〉0 : B

&-I〈〈y, x〉1, 〈y, x〉0〉 : A&B

Page 20: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Simplifying a program

[z : B & A]z&-E1

z1 : A

[z : B & A]z&-E0

z0 : B&-I

〈z1, z0〉 : A&B⊃-Iz

λz. 〈z1, z0〉 : (B & A)⊃ (A&B)

[y : B]y [x : A]x&-I

〈y, x〉 : B & A⊃-E

(λz. 〈z1, z0〉) 〈y, x〉 : A&B

⇓[y : B]y [x : A]x

&-I〈y, x〉 : B & A

&-E1〈y, x〉1 : A

[y : B]y [x : A]x&-I

〈y, x〉 : B & A&-E0〈y, x〉0 : B

&-I〈〈y, x〉1, 〈y, x〉0〉 : A&B

⇓[x : A]x [y : B]y

&-I〈x, y〉 : A&B

Page 21: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

William Howard (1980) — Curry-Howard Isomorphism

Page 22: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Curry-Howard

Hindley-Milner

Girard-Reynolds

Page 23: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Part II

Second-order logic,Polymorphism,

and Java

Page 24: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Gottlob Frege (1879) — Quantifiers (∀)

Page 25: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

John Reynolds (1974) — Polymorphism

Page 26: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

A magic trick

r :: [a]→ [a]

Page 27: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Theorems for Free!

r

r

r

r

-

? -?

[a]

map f

[a]

[b]

map f

[b]

ra

rb

Page 28: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Theorems for Free!

r

r

r

r

-

? -?

[97, 98, 99]

map chr

[‘a′, ‘b′, ‘c′]

[99, 98, 97]

map chr

[‘c′, ‘b′, ‘a′]

reverseInt

reverseChar

Page 29: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Odersky and Wadler (1997) — Pizza

Page 30: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Igarashi, Pierce, and Wadler (1999)— Featherweight Java

Page 31: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Igarashi, Pierce, and Wadler (1999)— Featherweight Generic Java

Page 32: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Gosling, Joy, Steele, Bracha (2004) — Java 5

Page 33: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Naftalin and Wadler (2006)

Page 34: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Part III

Three recent ideas

Page 35: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Idea I: Object to Object

• Object vitiates parametricityclass Object {

Bool eq(Object that) {...}String show() {...}

}

• Top preserves parametrictyclass Top {

// no methods!}

Page 36: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Idea II: Blame calculus

Page 37: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Idea III: Propositions as Sessions

Page 38: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Part IV

Aliens

Page 39: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

How to talk to aliens

Page 40: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Independence Day

Page 41: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

A universal programming language?

Page 42: Faith, Evolution, and Programming Languages...Faith, Evolution, and Programming Languages Philip Wadler University of Edinburgh TechMesh, London 4 December 2012 Evolution Multiculturalism

Lambda is Omniversal