Re: Memory requirements

Benedikt Rosenau <rosenau@xxxxxxxxxxxxxx> writes:

William D Clinger <cesura17@xxxxxxxxx> wrote:

I think you misunderstood me. Petit Larceny, by default,
evaluates the operands of that expression before the
operators. Changing the garbage collector does not change
the order of evaluation.

Sorry for the delay.

The point of my original article was that there is a strange correlation
between schemes evaluating the operator before the operands and the schemes
which need infinite memory to carry out the ((call/cc call/cc) (call/cc
call/cc)) loop.

That "correlation" is not "strange" at all if you look at the
operational semantics of call/cc. Call/cc exposes evaluation order
even where it would otherwise not be exposed.

Larceny seemed to be the only exception to that observation. However, as
you point out, Larceny is not an exception. This is more puzzling as it
apparently makes the correlation an 1:1 mapping: Schemes evaluating the
operator first are the schemes which need infinite memory for that loop.

Yes. That's completely normal and follows from the operational
rewrite rules for call/cc.