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