15-150: Principles of Functional Programming

Lecture 1: Evaluation and Typing, Binding and Scope

Today we outlined the course and its goals, including referential transparency, extensional equivalence, and parallelism. We started to explore the language SML by looking at its types.

We also introduced declarations, which give rise to environments. An environment collects a set of bindings of variables to values which can be used in subsequent declarations or expressions. We discussed the rules of scope, which explain how references to identifiers are resolved.

Key Concepts

We also briefly discussed function declarations, anonymous lambda expressions, and closures. Thursday's lectures will expand that discussion.

Sample Code

Slides from Lecture

Some Notes on Evaluation

(So far we have only discussed pages 1, 2, 3, 5 and part of page 6 in the evaluation notes. Please refer back to these notes after Thursday's lectures.)