ECL programming language
This article includes a improve this article by introducing more precise citations. (September 2017) ) |
The ECL programming language and system were an
ECL was an interactive system where programs were represented within the system; there was a compatible
ECL was primarily used for research and teaching in
Procedures and bind-classes
An ECL procedure for computing the greatest common divisor of two integers according to the Euclidean algorithm could be defined as follows:
gcd <-
EXPR(m:INT BYVAL, n: INT BYVAL; INT)
BEGIN
DECL r:INT;
REPEAT
r <- rem(m, n);
r = 0 => n;
m <- n;
n <- r;
END;
END
This is an assignment of a procedure constant to the variable gcd
. The line
EXPR(m:INT BYVAL, n: INT BYVAL; INT)
indicates that the procedure takes two parameters, of type INT
, named m
and n
, and returns a result of type INT
. (Data types are called modes in ECL.) The bind-class BYVAL
in each parameter declaration indicates that that parameter is passed
REPEAT
... END
construct is a loop form. Execution of the construct
r = 0 => n
when the form r = 0
evaluates to TRUE
causes execution of the loop to terminate with the value n
. The value of the last statement in a block (BEGIN
... END
) form becomes the value of the block form. The value of the form in a procedure declaration becomes the result of the procedure call.
In addition to the bind-class BYVAL
, ECL has bind-classes SHARED
, LIKE
, UNEVAL
, and LISTED
. Bind-class SHARED
indicates that a
LISTED
bind-class can only appear in the last formal parameter of the procedure, and that formal parameter is bound to a list of abstract syntax tree representations, one for each remaining actual parameter. ECL has an EVAL
built-in function for evaluating an abstract syntax tree; alternatively, there are functions by which programmers can explore the nodes of the abstract syntax treeSee also
References
PISEL = Proceedings of the international symposium on Extensible languages, Grenoble, France, 1971, published in ACM SIGPLAN Notices 6:12, December 1971.
- Benjamin M. Brosgol, "An implementation of ECL data types", PISEL, pp. 87–95.
- ISBN 0-89791-146-6
- Glenn H. Holloway, "Interpreter/compiler integration in ECL", PISEL, pp. 129–134.
- Charles J. Prenner, "The control structure facilities of ECL", PISEL, pp. 104–112.
- Ben Wegbreit, "An overview of the ECL programming system", PISEL, pp. 26–28.
- Ben Wegbreit, "Studies in extensible programming languages." Technical Report ESD-TR-70-297. Harvard University, Cambridge, Massachusetts, May 1970.
- Glenn Holloway, Judy Townley, Jay Spitzen, Ben Wegbreit, "ECL Programmer's Manual", Report 23-74, Center for Research in Computing Technology, Harvard University, December 1974.
- Larry Denenberg, "The implementation of PDP-11 ECL", Technical Report 29-77, Center for Research in Computing Technology, Harvard University, June 1977.