15-150: Principles of Functional Programming

Lecture 1: Prologue

In this lecture, we went over some course logistics and the philosophy behind the paradigm of functional programming. We learned about how functional programming is an improvement upon other kinds of programming, and it achieves that, in part, due to avoiding the mutation of state.

We learned about the three core theses, which are recurring themes that summarize what we will learn this semester. These are:

Big Ideas

We then explored some of the basics of the Standard ML programming language. This included expressions and values, and we saw how only well-typed expressions were evaluated, and sometimes produced values. We also saw how SML carried out typechecking to verify the type of a program is correct.


Some extra notes written by the Spring professor