from
The Free On-line Dictionary of Computing (8 July 2008)
CLU
<language> (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/).
(1994-12-16)