Newsgroups: comp.lang.lisp,comp.lang.clos
Path: cantaloupe.srv.cs.cmu.edu!bb3.andrew.cmu.edu!newsfeed.pitt.edu!godot.cc.duq.edu!newsgate.duke.edu!news.mathworks.com!newsfeed.internetmci.com!news.msfc.nasa.gov!elroy.jpl.nasa.gov!sdd.hp.com!night.primate.wisc.edu!aplcenmp!hall
From: hall@aplcenmp.apl.jhu.edu (Marty Hall)
Subject: Re: New Common Lisp, Lisp-to-C translation, Lisp library for C
Message-ID: <Dt8vs4.B06@aplcenmp.apl.jhu.edu>
Organization: JHU/APL Research Center, Hopkins P/T CS Faculty
References: <31C56FDA.794BDF32@elwoodcorp.com> <4q607p$t0j@sparky.midwest.net> <31C6B691.15FB7483@elwoodcorp.com>
Date: Wed, 19 Jun 1996 11:26:27 GMT
Lines: 29
Xref: glinda.oz.cs.cmu.edu comp.lang.lisp:21832 comp.lang.clos:3848

In article <31C6B691.15FB7483@elwoodcorp.com> "Howard R. Stearns"
<howard@elwoodcorp.com> writes: 
> When Eclipse compiles Lisp code
> to C, it separates out the arguments into temporary variables which
> are assigned in well ordered statements.  Thus the generated code
> does not depend on the ordering chosen by the compiler.
>
>(Before everyone gets grossed out, I should point out, regarding:
>  ugliness: that temporary variables are not created by the Eclipse compiler if
>            it can prove that the reference has no side effects and isn't 
>            effected by other argument expressions.  

Obviously, in general you can't prove whether or not a function has
side effects (unless you've figured out how to solve the halting
problem :-), but Eclipse is doing much more limited reasoning here.

> For example, (FOO A (BAR B 2))
>      will not use temporary variables (unless A or B are declared special).

I don't see why it matters if B is declared special. Also, I could
imagine pathological cases where BAR is really a macro that expands
into a form that changes A where it would make a difference if
(BAR B 2) were evaluated first, even though A is not special. 
Assumedly Eclipse checks for this or is only operating at this point
on forms with macros already expanded.

					- Marty
(proclaim '(inline skates))
<http://www.apl.jhu.edu/~hall/lisp.html>
