Barak.Pearlmutter@CS.CMU.EDU (06/06/89)
> Date: 1 Jun 89 12:05:26 GMT > From: "Donal O'Mahony - OMAHONY@cs.tcd.ie" <mcvax!ukc!tcdcs!csvax1!omahony@uunet.uu.net> > 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.