On Sun, Nov 15, 2009 at 12:12 PM, Juan Jose Garcia-Ripoll
> On Sun, Nov 15, 2009 at 5:10 PM, Gabriel Dos Reis
> <gdr@...> wrote:
>> On Sun, Nov 15, 2009 at 4:07 AM, Juan Jose Garcia-Ripoll
>> <juanjose.garciaripoll@...> wrote:
>>> * APPEND must not copy the last argument.
>>> * MULTIPLE-VALUE-BIND is replaced with a LET form when it only defines
>>> a single variable. This leads to faster and simpler code.
>> I have a related question. What is the "cost" of using LET forms as
>> opposed to applying LAMBDAs?
>> (The reason I'm asking is that I believe CCL turns LET forms into LAMBDA forms).
>> I was under the impression that LET forms were more efficient than application
>> of LAMBDAs but, I would actually welcome a clarification.
> CCL and SBCL probably used a compilation technique called continuation
> passing, or something like that, where every form is basically turned
Yes, I'm familiar with the CPS compilation technique.
> into a concatenated series of functions that receive an environment
> and performs a computation. In this format applying LAMBDAs is natural
> (it is the underlying representation), and LET is not.
> It think it is a cultural preference. There are many code
> transformations that have been developed for that representation and
> which are now being shown to exist, for instance, for SSA
yes, there are several papers including that of Andrew Appel.
> I personally find continuation passing formalism
> unintuitive and prefer plain code graphs, but I am just an old timer
> and have not received the proper education in that field.
You're in good company :-)