From ... Path: archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!134.222.94.5!npeer.kpnqwest.net!nreader1.kpnqwest.net.POSTED!not-for-mail Newsgroups: comp.lang.lisp Subject: Re: Problem with a named let. References: Mail-Copies-To: never From: Erik Naggum Message-ID: <3204478232455481@naggum.net> Organization: Naggum Software, Oslo, Norway Lines: 19 User-Agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Wed, 18 Jul 2001 20:50:33 GMT X-Complaints-To: newsmaster@Norway.EU.net X-Trace: nreader1.kpnqwest.net 995489433 193.71.66.1 (Wed, 18 Jul 2001 22:50:33 MET DST) NNTP-Posting-Date: Wed, 18 Jul 2001 22:50:33 MET DST Xref: archiver1.google.com comp.lang.lisp:13335 * Tim Bradshaw > So long as you don't mind your code blowing up in exciting ways when > you port it, I guess. Is there a portable way to determine whether you have a tail-recursive function or one that allocates a new stack frame for each recursion? Or is this intended to be a true, i.e., completely transparent, optimization that is only semi-determinable by crashes? It would be nice if there were a portably implemented at best, portably interfaced at least, function that would return the set of optimize declarations that would cause a class of function calls that are statically and portably determinable to merit tail-recursive calls. Allegro CL's features is known as compiler:tail-call-self-merge-switch and it is easy to see when it is true. #:Erik -- Travel is a meat thing.