CLUster.
An object-oriented programming language developed at MIT by Liskov et al in 1974-1975.
CLU is an object-oriented language of the Pascal family designed to support data abstraction, similar to Alphard . It introduced the iterator : a coroutine yielding the elements of a data object, to be used as the sequence of values in a 'for' loop.
A CLU program consists of separately compilable procedures, cluster s and iterators, no nesting. A cluster is a module naming an abstract type and its operations, its internal representation and implementation. Clusters and iterators may be generic. Supplying actual constant values for the parameters instantiates the module .
There are no implicit type conversion s. In a cluster, the explicit type conversions 'up' and 'down' change between the abstract type and the representation. There is a universal type 'any', and a procedure force[] to check that an object is a certain type. Objects may be mutable or immutable .
Exception s are raised using 'signal' and handled with 'except'. Assignment is by sharing, similar to the sharing of data objects in Lisp . Arguments are passed by call-by-sharing , similar to call-by-value , except that the arguments are objects and can be changed only if they are mutable. CLU has own variable s and multiple assignment.
See also Kamin's interpreters , clu2c .
["CLU Reference Manual", Barbara Liskov et al, LNCS 114, Springer 1981].
E-mail: Paul R. Johnson prj@pm-prj.lcs.mit.edu .
Versions for Sun and VAX/VMS . Portable version .
(1994-12-16)