Proper tail reflection?

I was reading some papers on reflective towers, and it occurred to me that levels in the towers look suspiciously similar to recursive calls (well, it was actually openly proclaimed by the authors, so probably "occurred" is not the right word).

For example, from A Tutorial on Behavioral Reflection and its Implementation:

In the same way well-defined recursions never require an infinite number of recursive calls, a well-defined reflective program never uses an infinite number of embedded reflective procedure calls.
What really occurred to me, why not give to reflective levels some kind of TCO?

After a minute's joy, I decided to consult Google, and found this:

Intensions and Extensions in a Reflective Tower:

The key points obtained here are: a formal relation between the semantic domains of each level; a formal identification of reification and reflection; the visual- isation of intensional snapshots of a tower of inter- preters; a formal justification and a generalization of Brown's meta-continuation; a (structural) denotational semantics for a compositional subset of the model; the distinction between making continuations jumpy and pushy; the discovery of the tail-reflection property; and a Scheme implementation of a properly tail-reflective and single-threaded reflective tower.
So, on a negative side, somebody (actually, Danvy) discovered this long ago; on a positive side, I can now read it :)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Interesting stuff

I am great fan of reflective towers...

How about I promote this to the home page?

Why not

...though I would prefer to see more comments first, just in case there are better sources.

Now, another informal angle (I really love thinking informally :) ) - if the reflective towers are like invocation stacks, then what would be like a Stackless Python (or a normal Scheme)? :)

OK

We'll wait..

Other reflective languages

I've tossed out Refci a few times.

Black generalizes Refci, but I find the Refci change points sensible and the papers a bit more application-oriented.

The Refci papers point out the issues with the previous languages Brown and Blonde.

So first* there was Brown, then Blond, now Black; Irish Schemers you know what you have to do.

* Well first there was 3-Lisp, but that's a different sequence.

Will it be Bald in the end?

I know that Brown is pretty old news, just never seem to stumble upon the notion of proper tail reflection. Is that discussed anywhere except that Danvy's paper?