CLU
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,
clusters 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 conversions.
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.
Exceptions 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 variables 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 <
[email protected]>.
Versions for Sun and VAX/VMS (ftp://pion.lcs.mit.edu/pub/clu/).
Portable version (ftp://mintaka.lcs.mit.edu/pub/dcurtis/).