LOOPS was one of the early frameworks for AI programming (-> for Knowledge-based Systems -> especially Expert Systems) in Lisp, which also made use of the new graphical user interface of the Interlisp-D Lisp Machine from Xerox. Interlisp-D was a combination of operating system and development environment, and was developed for the same computers, which also ran Smalltalk. Both were image-based and managed the source…
I was at a presentation on LOOPS in London given by Dan Bobrow and Mark Stefik, they were pitching it as an equivalent framework to KEE or ART as you describe. They had a good showcase application called Truckin' [1] that made good use of all the features of LOOPS. [1] https://www.markstefik.com/?page_id=359
Medley Loops: The Basic System (Lisp Object-Oriented Programming System) [pdf]
21–30 of 32 posts
Re: Medley Loops: The Basic System (Lisp Object-Oriented Programming System) [pdf]
#22Volume I of the Medley LOOPS series about the Lisp Object-Oriented Programming System, an Interlisp object extension. Volume II is coming in the late fall of 2024, Volume III in the fall of 2025.
Thanks for sharing. I didn't realize it was available, but the version is 1.2 and date is July 2024, so it must have been around for some time.
Re: Medley Loops: The Basic System (Lisp Object-Oriented Programming System) [pdf]
#23What are the major differences to CLOS?
LOOPS (Lisp object-oriented programming systems) is written in Interlisp for the Interlisp-D environment, was a Xerox product and is from around 1981. CLOS (Common Lisp Object System) is a general OOP standard extension for Common Lisp. A specification was proposed in 1987/88. CLOS was included in the Common Lisp standard and widely implemented by various implementations. Both were a "system" -> meaning that it is av…
Re: Medley Loops: The Basic System (Lisp Object-Oriented Programming System) [pdf]
#24LOOPS was one of the early frameworks for AI programming (-> for Knowledge-based Systems -> especially Expert Systems) in Lisp, which also made use of the new graphical user interface of the Interlisp-D Lisp Machine from Xerox. Interlisp-D was a combination of operating system and development environment, and was developed for the same computers, which also ran Smalltalk. Both were image-based and managed the source…
Re: Medley Loops: The Basic System (Lisp Object-Oriented Programming System) [pdf]
#25Earlier quoted context omitted.
Thanks. I'm mostly interested in the OO features. I assumed that LOOPS was essentially an OO extension of Interlisp (and thus a precursor of CLOS) due to the title. Does it really do "message sending", or is it rather like Smalltalk, which does "normal" method dispatch and call, but where the term "message sending" is use for this?
The answer would depend on what you think "message sending" is and why you think Smalltalk does not support "message sending".
CLOS and Lisp inherently involve passing objects by reference. If they allow mutation operations, the receiver of a value can mutate it and that's visible to the caller.
Re: Medley Loops: The Basic System (Lisp Object-Oriented Programming System) [pdf]
#26What are the major differences to CLOS?
And what are the major differences between LOOPS and CommonLOOPS (besides Interlisp vs CL)?
CommonLoops was proposed by Xerox to be the OOP system of Common Lisp in the standardization process. It was then decided to design a new system called Common Lisp Object System (CLOS), starting with a merge of the features of New Flavors (MIT/Symbolics) and CommonLoops (Xerox). Xerox implemented CLOS by modifying its CommonLoops implementation, during the standardization process. Thus Portable CommonLoops (PCL) was eventually the prototype CLOS + MOP implementation.
Re: Medley Loops: The Basic System (Lisp Object-Oriented Programming System) [pdf]
#27Earlier quoted context omitted.
The answer would depend on what you think "message sending" is and why you think Smalltalk does not support "message sending".
My intuition on the phrase "message sending" is that it should be distinguished by immutable values. If I send you a message by writing it on a piece of paper, I don't expect that if you write on that note it will change any information I have on me. The message is passed by value, not by reference. I should be able to copy the message, send it over a network or store it to external memory, and have everything still…
Re: Medley Loops: The Basic System (Lisp Object-Oriented Programming System) [pdf]
#28Earlier quoted context omitted.
And what are the major differences between LOOPS and CommonLOOPS (besides Interlisp vs CL)?
That's discussed in this paper: CommonLoops: merging Lisp and object-oriented programming https://dl.acm.org/doi/pdf/10.1145/28697.28700 CommonLoops was proposed by Xerox to be the OOP system of Common Lisp in the standardization process. It was then decided to design a new system called Common Lisp Object System (CLOS), starting with a merge of the features of New Flavors (MIT/Symbolics) and CommonLoops (Xerox). Xer…
Re: Medley Loops: The Basic System (Lisp Object-Oriented Programming System) [pdf]
#29Earlier quoted context omitted.
The answer would depend on what you think "message sending" is and why you think Smalltalk does not support "message sending".
My intuition on the phrase "message sending" is that it should be distinguished by immutable values. If I send you a message by writing it on a piece of paper, I don't expect that if you write on that note it will change any information I have on me. The message is passed by value, not by reference. I should be able to copy the message, send it over a network or store it to external memory, and have everything still…
Re: Medley Loops: The Basic System (Lisp Object-Oriented Programming System) [pdf]
#30OP 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)