somebody asked what's the different between LOOPS and CLOS, but probably more time relevant question is what's the difference between LOOPS and Flavors. they list Flavors as an inspiration, but also various knowledge management systems, so there must be something additional going on there. maybe lispm knows.<p>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.<p>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<p><pre><code> (send some-window :set-edge 10 10 40 40)
</code></pre>
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<p><pre><code> (← SomeWindow SetEdge 10 10 40 40)
</code></pre>
this is obviously only a margin improvement.<p>clos solved this problem by drifting away from smalltalk's blackbox concept and making everything generic function oriented,<p><pre><code> (set-edge some-window 10 10 40 40)</code></pre>