Tutorial on Static Inference of Numeric Invariants by Abstract Interpretation

Reconciling Abstraction with High Performance: A MetaOCaml Approach teaches the reader how to write typed code generators, how to make them modular, and how to gradually introduce domain-specific optimizations with MetaOCaml. Assuming no prior knowledge of MetaOCaml and only a basic familiarity with functional programming, it explains and illustrates how to implement a simple domain-specific language (DSL) for linear algebra, with layers of optimizations for sparsity and memory layout of matrices and vectors, and their algebraic properties.

Reconciling Abstraction with High Performance: A MetaOCaml Approach is based on the written record of a live tutorial delivered on several occasions (first at CUFP – Commercial Users of Functional Programming 2013). It inherits the hands-on style of those tutorials, built around live coding, in interaction with the MetaOCaml and its type checker and the audience. It develops code piece-by-piece by submitting small fragments to the MetaOCaml interpreter, fixing type problems, generating sample code and testing it, noting the points of improvement, and adjusting the generator as needed. The monograph includes many exercises and homework projects to work on alone or in groups.