CLU

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)
    

[email protected]