Subject: inlined function calls
From: Erik Naggum <nobody@naggum.no>
Date: 1996/11/30
Newsgroups: comp.lang.lisp
Message-ID: <3058359104672953@naggum.no>


this is probably a very simple question, but I'd like to have some
assumptions confirmed.

given a form like (mapcar (lambda (<args>) <body>) <list>), is a compiler
free to produce code without any other function calls than those in <body>
(which it may also inline)?  that is, knowing that symbols in the
COMMON-LISP package cannot be redefined, can a compiler fully utilize any
knowledge it may have about the use of functions, even to the point of
"refining" the programmer's implementation as long as it maintains the
semantics?

e.g, can (map nil (lambda (file) <whatever>) (directory <dirspec>)) and
(dolist (file (directory <dirspec>)) <whatever>) produce exactly the same
code?

I believe this should be possible, but then there are all sorts of problems
in debugging and tracing Lisp programs which may have caused somebody not
to allow it.  (I can't find anything either way in the standard.)

#\Erik
-- 
Please address private replies, only, to "erik".  Junk mail, spam,
stupid flames, courtesy copies, etc, should be sent to "nobody".