[racket] Swindle
[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!