
Are there any Racket implementations of 2-lisp (and 3-lisp)? I’m unable to understand what’s going on with up and down by just reading the paper (“Reflection and Semantics in Lisp”), I feel playing with an implementation would be helpful. Any leads would be appreciated!

I have not read this paper, but the abstract claims that it’s easier to understand than the original Smith’s paper, so you might be interested in it: http://www.p-cos.net/documents/s32008.pdf

Alternatively, fire up a Common Lisp implementation.

From my quick skim, this is different from lisp1 vs lisp2

Are we permitted to mention other LISPs ’round here? :stuck_out_tongue:

Ah - I admit I assumed it was a lisp1 vs lisp2 thing.

I saw a video about towers of interpreters in Racket. Is that what you mean by up and down and such?

Yeah, it is different. Looks like 3-lisp is a lisp with sufficient reflective capability that you can implement things like exceptions as regular procedures, without resorting to special forms or clever tricks with coroutines. It looks like the name was chosen because the author proposes it as a solution to three specific problems they have identified.
2-lisp is a proposed intermediate step used to implement 3-lisp. Its distinguishing feature is that it makes some semantic distinctions that programming languages don’t typically make in a first-class way.

And yeah it’s distressing how, decades ago, academics would drop papers like this without providing an implementation. But I suppose that was less practical ten than it is now.

It seems like it might be comparable to the level of reflection available in Pharo?

I swear I read a paper about 3-lisp that had part of an implementation.

But I read it about 12–13 years ago.

I am mis-remembering. I read the reflective papers that Friedman and Wand wrote about reflective towers. http://www.ontolinux.com/community/LaSC-1-1-pp11-37-mystery-tower-revealed-non-reflective-description.pdf

Hmm that print looks like it has some math typesetting problems

In practical terms, is there anything a 3-lisp could do that Racket couldn’t accomplish with #lang ...
?

@seanbunderwood I came across Brian Cantwell Smith’s thesis/book ‘On the Origin of Objects’ (and 3-lisp) via @gregor.kiczales ‘Effectiveness sans Formality’ keynote talk at OOPSLA’07. Well out of my depth but it was a great keynote. (I believe Professor Kiczales lurks on this slack. ) Nb I remember being confused by the Lisp–1, Lisp–2, 3-Lisp.

I fear the next step is opening the interpreter itself up for manipulation at run-time. Perhaps we’ll call that one FORTH.

Syntax Parse Bee