by pamoroso on 10/16/24, 2:42 PM with 28 comments
by lispm on 10/19/24, 7:10 PM
Remarkable is the fully interactive way of working in the REPL (Lisp's Read Eval Print Loop) and through the GUI, including live editing all classes/etc. via menus. LOOPS extended Interlisp with various ways to do object-oriented programming and a rule-system.
There is also a "friendly primer" for Xerox LOOPS, from mid 1980s. https://bitsavers.org/pdf/xerox/interlisp-d/198510_Koto/3102...
Note that LOOPS is an early OOP System, it's not a about iteration in a loop.
by pamoroso on 10/16/24, 2:42 PM
by Rochus on 10/19/24, 8:31 PM
by g19205 on 10/20/24, 11:09 PM
OP is a very long book, I haven't had a chance to read it fully, but first thing I wanted to see is how they manage message sending, and it's as jank as it is in flavors. I thought considering how custom interlisp can be they'd do something special. nope, it's just send.
for those who don't know what I'm talking about, an old school smalltalk style object system lets one send arbitrary messages, without prior knowledge of what those messages might be, and treats the receiving object as a blackbox (conceptually anyway). this approach doesn't map well to s-exp, because first symbol in an s-expression drives the logic. in flavors (and in LOOPS) the symbol used is "SEND", so in order to actually send a message you write something like
(send some-window :set-edge 10 10 40 40)
as you can imagine a very heavily object oriented code becomes littered with sends. LOOPS seems to make it a little bit less painful by making ← an equivalent of send, so above can be written as (← SomeWindow SetEdge 10 10 40 40)
this is obviously only a margin improvement.clos solved this problem by drifting away from smalltalk's blackbox concept and making everything generic function oriented,
(set-edge some-window 10 10 40 40)