Robert Harper

Robert Harper is a Professor of Computer Science at Carnegie Mellon University.

  • The Definition of Standard ML, Revised Edition

    The Definition of Standard ML, Revised Edition

    Robin Milner, Robert Harper, David MacQueen, and Mads Tofte

    Standard ML is a general-purpose programming language designed for large projects. This book provides a formal definition of Standard ML for the benefit of all concerned with the language, including users and implementers. Because computer programs are increasingly required to withstand rigorous analysis, it is all the more important that the language in which they are written be defined with full rigor. One purpose of a language definition is to establish a theory of meanings upon which the understanding of particular programs may rest. To properly define a programming language, it is necessary to use some form of notation other than a programming language. Given a concern for rigor, mathematical notation is an obvious choice. The authors have defined their semantic objects in mathematical notation that is completely independent of Standard ML. In defining a language one must also define the rules of evaluation precisely—that is, define what meaning results from evaluating any phrase of the language. The definition thus constitutes a formal specification for an implementation. The authors have developed enough of their theory to give sense to their rules of evaluation. The Definition of Standard ML is the essential point of reference for Standard ML. Since its publication in 1990, the implementation technology of the language has advanced enormously and the number of users has grown. The revised edition includes a number of new features, omits little-used features, and corrects mistakes of definition.

    • Paperback $30.00
  • The Definition of Standard ML

    Robert Harper, Robin Milner, and Mads Tofte

    This book presents the official, formal definition of the programming language ML including the rules for grammar and static and dynamic semantics. ML is the most well-developed and prominent of a new group of functional programming languages. On the cutting edge of theoretical computer science, ML embodies the ideas of static typing and polymorphism and has also contributed a number of novel ideas to the design of programming languages.

    ContentsSyntax of the Core • Syntax of Modules • Static Semantics for the Core • Static Semantics for Modules • Dynamic Semantics for Modules • Programs

    Appendixes: Derived Forms • Full Grammar • The Initial Static Basis • The Initial Dynamic Basis • The Development of ML

    • Hardcover $30.00
    • Paperback $15.00


  • The Little Typer

    The Little Typer

    Daniel P. Friedman and David Thrane Christiansen

    An introduction to dependent types, demonstrating the most beautiful aspects, one step at a time.

    A program's type describes its behavior. Dependent types are a first-class part of a language, and are much more powerful than other kinds of types; using just one language for types and programs allows program descriptions to be as powerful as the programs they describe. The Little Typer explains dependent types, beginning with a very small language that looks very much like Scheme and extending it to cover both programming with dependent types and using dependent types for mathematical reasoning. Readers should be familiar with the basics of a Lisp-like programming language, as presented in the first four chapters of The Little Schemer.

    The first five chapters of The Little Typer provide the needed tools to understand dependent types; the remaining chapters use these tools to build a bridge between mathematics and programming. Readers will learn that tools they know from programming—pairs, lists, functions, and recursion—can also capture patterns of reasoning. The Little Typer does not attempt to teach either practical programming skills or a fully rigorous approach to types. Instead, it demonstrates the most beautiful aspects as simply as possible, one step at a time.

    • Paperback $38.00