A thorough treatment of types is deferred to below. There are many categories of types in Birch. Two important categories are:

  1. Basic types, such as Boolean, Integer, Real, and String.
  2. Class types as declared in user code, such as InputStream, OutputStream, and Gaussian from the standard library.

Instantiations of basic types (e.g. variables, expression results) are typically values, while those of class types are called objects.