[plt-scheme] Re: Swindle CLOS ?
On Mar 9, Kyle Smith wrote:
> Eli Barzilay <eli at ...> writes:
>
> > I don't see any reason to do this: conceptually, `x' is a field of
> > Point, so a `ColoredPoint-x' doesn't make much sense to me. But the
> > `Point-x' thing is in any case a generic function -- which means that
> > it does not "belong" to Point -- it just happens to have a method that
> > is qualified for Points. So, you can have it called `get-x' and then
> > it's independent of any class name (there is an option that makes it
> > use `x' for a name, it's just that it's a bad name in this case).
> > (There is even a customization option that defines the accessor as a
> > plain function instead of a generic -- basically one that is doing the
> > actual accessing through (slot-ref foo 'x).)
>
> Thanks for your reply Eli,
>
> Don't confuse my wanting to emulate Meroonet with Swindle CLOS as an
> endorsement of how Meroonet does things,
No, I just said that I personally don't see any sense in doing that
(adding a `ColoredPoint-x' accessor in your example) which is why I
didn't do it at the time. It only defines accessors that are
syntactically part of the definition -- for example:
(defclass Point () x y :auto #t :print #t)
(defclass ColoredPoint (Point) x y color :auto #t :print #t)
will give you a `ColoredPoint-x' that is independent from `Point-x'.
(The whole auto-accessor thing is my own thing, BTW, so there's no
CLOS tradition to follow there (IIRC, at least).)
> [...]
> I saw the other options for accessor names, but they seemed worse by
> far than the default, since you don't want name collisions between
> functions because you haven't qualified the name with the class
> name.
(I guessed you won't like it -- it can make less of the type
information be part of the name. But it does make sense if your
accessors have good names.)
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://www.barzilay.org/ Maze is Life!