Author: Christian.Queinnec@lip6.fr

## Introduction

Every language comes with collections of programs that are reusable by the programmer, called libraries. The quality and diversity of these programs are often some of the criteria one uses to assess the ease of use of a language. You could separate libraries into two categories: those that offer types and functions that are often useful but could be written in the language, and those that offer functionality that cannot be defined in the language. The first group saves the programmer the effort of redefining utilities such as stacks, lists, etc. The second group extends the possible uses of the language by incorporating new functionality into it.
The Objective CAML language distribution comes with many precompiled libraries. For the curious reader, the uncompiled version of these libraries comes packaged with the source code distribution for the language.
In Objective CAML, all the libraries are organized into modules that are also compilation units. Each one contains declarations of globals and types, exceptions and values that can be used in programs. In this chapter we are not interested in how to create new modules; we just want to use the existing ones. Chapter 14 will revisit the concepts of the module and the compilation unit while describing the module language of Objective CAML, including parameterized modules. Regarding the creation of libraries that incorporate code that is not written in Objective CAML, chapter 12 will describe how to integrate Objective CAML programs with code written in C.
The Objective CAML distribution contains a preloaded library (the `Pervasives` module), a collection of basic modules called the standard library, and many other libraries adding functionality to the language. Some of the libraries are briefly shown in this chapter while others are described in later chapters.