From: chris Date: Thu, 26 Feb 2015 02:49:49 +0000 (-0500) Subject: (no commit message) X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=commitdiff_plain;h=c98d4e2d9d0c85b16ac707323031114f2a3db1aa --- diff --git a/topics/_week5_system_F.mdwn b/topics/_week5_system_F.mdwn index 5b2e297c..a7b4bb91 100644 --- a/topics/_week5_system_F.mdwn +++ b/topics/_week5_system_F.mdwn @@ -118,13 +118,14 @@ relevant evaluator is called "fullpoly"): N = ∀α.(α->α)->α->α; Pair = (N->N->N)->N; - let zero = Λα.λs:α->α.λz:α.z in - let fst = λx:N.λy:N.x in - let snd = λx:N.λy:N.y in - let pair = λx:N.λy:N.λz:N->N->N.z x y in - let suc = λn:N.Λα.λs:α->α.λz:α.s (n [α] s z) in - let shift = λp:Pair.pair (suc (p fst)) (p fst) in - let pre = λn:N.n [Pair] shift (pair zero zero) snd in + + let zero = Λα. λs:α->α. λz:α. z in + let fst = λx:N. λy:N. x in + let snd = λx:N. λy:N. y in + let pair = λx:N. λy:N. λz:N->N->N. z x y in + let suc = λn:N. Λα. λs:α->α. λz:α. s (n [α] s z) in + let shift = λp:Pair. pair (suc (p fst)) (p fst) in + let pre = λn:N. n [Pair] shift (pair zero zero) snd in pre (suc (suc (suc zero))); @@ -164,7 +165,7 @@ Typing ω In fact, unlike in the simply-typed lambda calculus, it is even possible to give a type for ω in System F. -ω = λx:(∀α.α->α).x [∀α.α->α] x +ω = λx:(∀α.α->α). x [∀α.α->α] x In order to see how this works, we'll apply ω to the identity function.