SML# Document

Chapter 30. Preface

This part presents internals and data structures of the SML# compiler. The objective of this part is provide the readers who have appropriate backgrounds on functional programming languages to understand the details of the SML# compiler.

Although the main intended audience are compiler developers and researchers, who are interested in extending SML# or developing new compilers, efforts have been made to make this document should a reference document for general readers who are interested in high level programming language compilers.

There are excellent codes in open-source software, many of which we truly respect. One of the problems we often feels against open-source culture is the lack of effort and enthusiasm to document the structures and functions of these excellent codes. The contention that code written in a declarative language is itself self-documenting is a vain argument for large and complicated systems containing hundreds of thousands of lines. A large and complicated software system inevitably contains implicit assumptions and various meta-level data that control behavior of multiple components of the system. To understand the system, it is therefore necessary to understand the encoded semantics of those control data and the flow of control of the multiple related components. Currently, the only way to solve this problem is to document the system. We further believe that a detailed document of a large software system could itself be a valuable asset for open-source community.

In this part, we attempt to provide such a document on the SML# system, taking “VAX/VMS internals and data structures” [3] as a model. In addition to descriptions of the code, we try to provide the design rationale, relevant theory, algorithm, and implementation techniques underlying the code.

Part V contains the following.

  1. Chapter 31 describes the SML# distribution package.

  2. we shall continue writing the entire internals, and shall uploaded them as they become ready …