[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Antecedent, what's thy name?



One of the characteristic drawbacks of "low level languages"
is the incessant need to invent names or places to
temporarily put quantities that you had no intention of naming.
Here's an case where LISP is guiltier than machine language.

Suppose (F a) is any function, (G a b) is a recursive function,
and x stands for a large (or costly) expression.  Now suppose
you want (G x (F x))) (or just (G x x)).  In machine language,
(and presumably in the compiler's model), the second x is
readily available in a register or arg vector or stack as
part of the setup to call G, but in LISP there seems to be no
way to exploit this, necessitating the invention of a
temporary.

A clean pronoun mechanism permitting later arguments to reference
their predecessors on the left would enhance clarity and efficiency,
and resolve many parallel-serial assignment dilemmas in favor of
parallel, by providing and alternate serial mechanism.

Reservation:  a numeric designator ("N args ago") is unflavorful
on grounds of readability and editability, hatching gross bugs
on failure to increment or decrement the Ns upon insertion or
deletion of intervening args.

Any suggestions?
-------