The Opal Language
Opal is a strongly typed, higher-order, strict, pure functional language,
and as such can be classified alongside ML, Haskell, and other modern
functional programming languages. However, the language also has a
distinctive algebraic flavour in the tradition of languages such as CIP-L,
Obj, and others.
The language includes what we consider to be mandatory for research and
teaching on:
- optimizing compilation of algebraic
languages
- formal programming methodology
- methodology of implementing large software systems
The following characteristics give an overview of the language design:
- Modularization by means of separated signature and implementation parts of structures .
- Selective imports of items from structures.
- Parameterized structure, with support to shortcut the
notation of actualization morphisms, or to let them be inferred by the
compiler.
- Free constructor views on sorts, which allow pattern-based
function
definitions in spite of quite different implementations.
- Unrestricted overloading of names, considering complex contexts
for the overloading resolution.
- Puristic scheme language with no built-in data types (except of
booleans and denotations).
A detailed introduction to the functional core of Opal can be found in
the
tutorial
.
Opal-1 and its predecessor Opal-0 have been used for some time at the Technical University
of Berlin in basic and advanced computer science courses, as well as in
several research projects. Opal has been used to implement its own
compiler.
The Opal Group
Last modified: Fri Nov 28 20:37:24 MET 1997