CS 442/642:
Principles of Programming
Languages
Introduction to Racket
Instructor: Prabhakar Ragde
1 / 141
2 / 141
Marking scheme:
40% assns, 20% midterm, 40% nal
Required textbook: Pierce, Types
and Programming Languages
(See course Web page for more
det
System F
System F
1 / 102
System F, also called the
polymorphic -calculus (Girard,
1972; Reynolds, 1974) adds the
idea of type quantication to the
simply-typed lambda calculus.
2 / 102
In ML-style let-polymorphism, we
typed the identity function as
8X . X
Haskell features (from module 01):
Haskell
Purity
I Laziness
I Type classes
I Monads
I
1 / 234
2 / 234
Some historical milestones:
First committee meeting 1987
(last one 1999)
David Turners SASL (1976),
KRC (1982), Miranda (1985)
Haskell 1.0 Report 1 Apri
ML
I
I
OCaml
I
I
I
I
I
Stands for Meta Language
Originally designed as metalanguage for
LCF theorem prover
(modern successors HOL/Isabelle)
Robin Milner, 1978
Standardized (SML): 1990
Implementation: SML/NJ
Basis library: 1997
Fork: Caml (1985), OCaml (19
Subject: Type inference
Type inference
Readings: Pierce, chapter 22.
1 / 96
The only explicit type annotations in
the typed lambda calculus extended
with natural numbers and Booleans
are on the variables of abstractions.
3 / 96
2 / 96
What if we erase the