SML# Document Version 4.0.0
7 Introduction to ML programming

7.1 About the ML language family

SML# is a programming language in the ML family.

ML was first developed as a Mmeta Language of Edinburgh LCF[3] system. The prefix meta in this particular usage probably traces back to Greek phrase “ta meta ta phusika”, which simply denotes the book placed after the phusika (Physics, or the book on the nature). The denoted book happens to be on philosophy (metaphysics), which made this prefix receive a meaning of the (philosophical) attitude of analyzing things beyond the ordinary way of thinking. In the context of languages, a meta language is a language used to analyze the ordinary usage (writing/reading/speaking) of a language. Objects of LCF system are computable functions (programs) represented by a language called PPLAMBDA. LCF ML was the meta language of PPLAMBDA, namely, a programming language to manipulate PPLAMBDA expressions (functions).

ML’s name as well as its features are originated from this historical role of LCF ML. For flexible manipulation of programs, LCF ML itself was defined as a functional language. In addition, a type inference system was introduced for reliable manipulation of function terms. Since the success of LCF ML, ML has evolved as a general purpose programming language, and several compilers have been developed for ML. Based on these efforts, its specification is formally defined as Standard ML [5, 6].