perm filename ECL[3,2] blob sn#468634 filedate 1979-08-27 generic text, type T, neo UTF8
ECL is a self-contained, interactive programming system.  It allows rapid
development and testing of programs through interpretive execution, and it
also provides for compilation of efficient machine code as development and
debugging stabilize.

ECL is based on the EL1 extensible programming language.  EL1 is a
structured language; it includes a number of syntactic constructs that
encourage clear programming, such as a flexible iteration expression and a
general case selection mechanism.  Strict type checking is enforced to
facilitate compilation.

Two unusual features of EL1 are its powerful data type definition
facility, and the ease with which programs can be manipulated.  Type
generators for array, record and pointer data are built-in, and others can
be defined from these by extension.  ECL's storage management is a hybrid
scheme, providing both the efficiency of stack behavior, when it is
feasible to link allocation with program scope, and the flexibility of
"heap" allocation, when it is not.  A general compacting garbage collector
is part of the system.

ECL's data type extension mechanism encourages the creation of data
abstractions appropriate to particular problem domains, because the
behavior of a new class of data can be determined completely by its
definer.  Type conversion, object initialization, field access and the
like may be specified by programmer defined procedures associated with the
data types themselves.  Data properties, therefore, are localized so that
representations and other attributes can usually be changed easily,
without affecting programs that use the data.

EL1 is also unusual in that it permits program expressions to be
manipulated as data and to be evaluated under program control by a call on
the system interpreter.  ECL's parser translates program text into a
common internal representation which is shared by all components of the
system.  This enhances the ability to extend EL1 to new problem domains.
New syntactic features can be added by definition of new operators and
reserved words, and the corresponding semantics can be provided either by
conventional procedures, by user-defined interpretation of the internal
program representation, by pattern-directed rewriting of programs in the
extended language, or by a mixture of these.

Complete documentation can be found in ECL.WB[UP,DOC].  Report complaints
and problems to WB.