Subject: Re: do loops and idioms
From: rpw3@rigden.engr.sgi.com (Rob Warnock)
Date: 1997/12/03
Newsgroups: comp.lang.lisp
Message-ID: <662n1a$u36i@fido.asd.sgi.com>

Chuck Fry <chucko@best.com> wrote:
+---------------
| >Which implementations of Scheme (or whatever name is used) are not
| >properly tail-recursive?
| 
| If I remember correctly, at least R4RS specifies that tail recursion
| support is mandatory, a fundamental property of Scheme.
+---------------

While that is quite true, there are still several useful implementations
that violate it, at least in its most general form (that is, other than
immediate self-recursion), primarily compilers which chose intermediate
target languages (e.g., C, Java) which don't conveniently support generalized
tail-call optimization, e.g.:

	- Scheme->C
	- Bigloo
	- Stalin
	- Kawa (Scheme in Java)

...and probably others.


-Rob

p.s. AFAIK, all of the above *will* properly handle tail-recursion within
a single "DEFINE" or "LETREC" group, just not the full generality.

-----
Rob Warnock, 7L-551		rpw3@sgi.com   http://reality.sgi.com/rpw3/
Silicon Graphics, Inc.		Phone: 650-933-1673 [New area code!]
2011 N. Shoreline Blvd.		FAX: 650-933-4392
Mountain View, CA  94043	PP-ASEL-IA