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 v
ALUes 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 v
ALUes 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
. {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) In addition suitable contents:
[ 2 ] [ = ] [ @ ] [ abstraction ] [ ag ] [ ai ] [ al ] [ Alpha ] [ Alphard ] [ am ] [ an ] [ ar ] [ arc ] [ arg ] [ argument ] [ as ] [ assignment ] [ at ] [ au ] [ B ] [ b ] [ ba ] [ bar ] [ be ] [ bj ] [ bs ] [ by ] [ C ] [ ca ] [ call-by-vALUe ] [ ch ] [ ci ] [ ck ] [ CL ] [ cl ] [ clu2c ] [ cluster ] [ co ] [ com ] [ con ] [ cons ] [ cu ] [ data ] [ data abstraction ] [ de ] [ design ] [ ding ] [ do ] [ down ] [ du ] [ E ] [ ec ] [ ed ] [ edu ] [ ee ] [ element ] [ er ] [ era ] [ es ] [ et ] [ explicit type conversion ] [ fi ] [ file ] [ fo ] [ for ] [ ge ] [ gen ] [ gn ] [ gr ] [ gu ] [ h ] [ handle ] [ hang ] [ hat ] [ hn ] [ hr ] [ id ] [ ie ] [ il ] [ implicit type conversion ] [ in ] [ instantiate ] [ int ] [ interpreter ] [ io ] [ is ] [ IT ] [ it ] [ iterator ] [ J ] [ K ] [ Kamin' s interpreters ] [ la ] [ language ] [ lc ] [ ld ] [ Lex ] [ li ] [ Lisp ] [ loop ] [ ls ] [ lt ] [ lu ] [ ly ] [ M ] [ ma ] [ mail ] [ meter ] [ mil ] [ MIT ] [ mm ] [ mo ] [ mod ] [ module ] [ mp ] [ mu ] [ N ] [ na ] [ NC ] [ nc ] [ NCS ] [ ne ] [ ng ] [ ni ] [ nl ] [ no ] [ ns ] [ nu ] [ O ] [ object ] [ object-oriented ] [ om ] [ op ] [ pa ] [ param ] [ parameter ] [ pe ] [ ph ] [ pl ] [ ply ] [ pm ] [ port ] [ pr ] [ procedure ] [ program ] [ programming ] [ programming language ] [ pt ] [ query ] [ rc ] [ re ] [ rete ] [ ro ] [ routine ] [ S ] [ sa ] [ sc ] [ se ] [ sh ] [ shar ] [ si ] [ sig ] [ signal ] [ sk ] [ so ] [ st ] [ su ] [ Sun ] [ support ] [ T ] [ table ] [ th ] [ to ] [ tp ] [ tr ] [ tw ] [ type ] [ ua ] [ um ] [ up ] [ us ] [ V ] [ va ] [ vALUe ] [ var ] [ variable ] [ VAX ] [ VAX/VMS ] [ ve ] [ version ] [ VM ] [ VMS ] [ X ]