[racket] Swindle

From: Eli Barzilay (eli at barzilay.org)
Date: Tue Mar 18 08:11:36 EDT 2014

[Late reply.]

On January 23rd, Matthias Felleisen wrote:
> On Jan 23, 2014, at 2:38 AM, Patrick Useldinger wrote:
> > 2) My (unqualified) first impression is that the OOP layer in
> >    Swindle is way more powerful than the "standard" OOP layer in
> >    Racket. Is there a reason why Swindle has not become the
> >    standard OOP layer in Racket?
> Racket, at the time PLT Scheme, came with an OO system of its own
> from the very beginning. It was an integral piece of the system,
> added in support of the GUI component. By the time Swindle was
> added, this OO system was on its second iteration and may have been
> on its third one.
> Also keep in mind that expressive power comes with a significant
> cost. It really is a trade-off.
> I will let Eli respond to the first question, concerning the state
> of the docs and his continued commitment to Swindle.

It's "weakly supported" in the sense that it works and will likely
continue to work -- but it could use some work in revising it to
support more types that have been added since it was written.

But note Matthias's comment about the cost: one aspect of this cost is
that the kind of dynamic dispatching that Swindle is doing can be very
slow, even with some optimizations that it's already doing.  A more
"severe" kind of cost is the fact that CLOS is inherently doing a
side-effect whenever you define a method via `defmethod' -- when you
do that, it actually is not defining anything, but rather creates a
new method and adds (using mutation) it to the list of methods
contained in a generic function.  This means that you can get things
to behave in a surprising way and also break other people's code --
and that's in addition to the usual kind of code spaghetti that OOP
gives you.

          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Posted on the users mailing list.