joshibharathiramana
2021-7-12 08:05:33

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!


sorawee
2021-7-12 08:23:07

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


soegaard2
2021-7-12 09:17:31

Alternatively, fire up a Common Lisp implementation.


sorawee
2021-7-12 09:19:53

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


jcoo092
2021-7-12 09:20:08

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


soegaard2
2021-7-12 09:21:11

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


ben.knoble
2021-7-12 12:21:25

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


seanbunderwood
2021-7-12 12:23:46

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.


seanbunderwood
2021-7-12 12:25:38

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.


seanbunderwood
2021-7-12 12:33:51

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


samdphillips
2021-7-12 17:32:22

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


samdphillips
2021-7-12 17:32:41

But I read it about 12–13 years ago.


samdphillips
2021-7-12 17:38:06

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


samdphillips
2021-7-12 17:40:29

Hmm that print looks like it has some math typesetting problems


seanbunderwood
2021-7-12 17:50:43

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


spdegabrielle
2021-7-12 18:02:54

@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.


seanbunderwood
2021-7-12 18:14:04

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


spdegabrielle
2021-7-12 18:58:52

Syntax Parse Bee