Reading: “Concepts in Programming Languages” Revised Chapter 5
“Real World Haskell”, Chapter 0
Many others: Algol 58, Algol W, Scheme, EL1, Mesa (PARC), Modula-2,
Dennis Ritchie, Turing Award winner, for writing Unix
Statically typed, general purpose language,
designed for writing systems code.
Computational model re±ects underlying machine.
Relationship between arrays and pointers
An array is treated as a pointer to ²rst element
is equivalent to ptr dereference:
Pointer arithmetic is
common in other languages
Not statically type safe.
“C is quirky, ±awed, and a tremendous success.”
Statically typed, general-purpose programming language
Designed by Turing-Award winner
Robin Milner for LCF Theorem Prover
Type safe, with formal semantics
Compiled language, but intended for interactive use
Combination of Lisp and Algol-like features
Abstract data types
Used in textbook as example language
Haskell is a programming language that is
Similar to ML
: general-purpose, strongly typed, higher-order,
functional, supports type inference, supports interactive and
Different from ML
: lazy evaluation, purely functional core,
rapidly evolving type system.
Designed by committee in 80’s and 90’s to unify
research efforts in lazy languages.
A History of Haskell: Being Lazy with Class
” HOPL 3
Good vehicle for studying language concepts
Types and type checking
General issues in static and dynamic typing
Ad hoc polymorphism (aka, overloading)
Lazy vs. eager evaluation
Tail recursion and continuations
Precise management of effects