Functional Programming with Standard ML

In this volume, we explore functional programming through ML (“Meta Language”). Specifically, we will use the modern dialect of ML called SML, but we will refer to the language as ML. We start with ML because many of its features inspired some of the more well-known functional programming languages — Haskell, Racket, F#, Erlang, Scala, and many others have idioms that can be traced back to ML.

Developed by the Turing medalist Robin Milner and others at the University of Edinburgh in the 1970s, ML was created to develop proof verification systems. As work continued, however, both the developers and users began noticing that ML could be used for purposes beyond verifying mathematical proofs. Today, ML has several descendants: SML (“Standard ML”, the dialect we use in this volume), OCaml, and F#.