Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!apple!bloom-beacon!CS.CMU.EDU!Barak.Pearlmutter From: Barak.Pearlmutter@CS.CMU.EDU Newsgroups: comp.lang.scheme Subject: Re: SCOOP problems Message-ID: Date: 6 Jun 89 00:42:00 GMT Sender: daemon@bloom-beacon.MIT.EDU Organization: The Internet Lines: 34 > Date: 1 Jun 89 12:05:26 GMT > From: "Donal O'Mahony - OMAHONY@cs.tcd.ie" > Subject: SCOOPS problems > Message-Id: <46261@csvax1.cs.tcd.ie> > > Having used X-Lisp for a while, I moved over to TI-Scoops. There are > two very annoying defects in that implementation of OOP. > > 1) SCOOPS objects don't have a SELF instance variable. I had to get > around this by redefininng SEND to do a FLUID-LET on the symbol > SELF before sending the message, but this is both ugly and slow. > > 2) There is no SEND-SUPER primitive - this means that super-classes > methods must be completely overridden, rather than extended which > removes a lot of the benefits of having inheritance in the first > place. > > > A slightly less annoying feature is that the arguments to SEND > are evaluated in the environment of the object begin sent-to > rather than in the calling environment i.e. > (let ((a 1)) > (send an-object (+ a 1))) > will bomb-out due to 'a' not being defined in an-object's environment. > > Has anybody got good solutions to the above? If simple generic dispatch would suffice, you could use a non object oriented dialect which supports generic procedures, like ADA or T. On the other hand, Oaklisp purports to be a solution. As you may have heard, Oaklisp claims to retain Scheme's lexical scoping while incorporating so-called object-oriented facilities, allegedly including the apparently desirable ``features'' described above.