CLUster.
by Liskov et al in 1974-1975.
designed to support data abstraction, similar to
Alphard.
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.
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
arguments are objects and can be changed only if they are
["CLU Reference Manual", Barbara Liskov et al, LNCS 114,
Springer 1981].
(1994-12-16)