This is the mail archive of the guile@cygnus.com mailing list for the guile project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
At 02:18 AM 11/8/98 -0800, Craig Brozefsky wrote: >This is pretty much what I just did in the last couple hours (as well >as make a most kick ass curry). After seeing this message from you I >figured I should just code up some of the ideas I had. I now have >CLOS like macros for defining classes and methods, and have extended >the stock meta-objects to support some niceties like documentation and >default initialization arguments. I don't yet have key and optional >args to generic functions but I should be able to get those rolled in >the next night or so. Currying functions and cooking curry sounds like Scheme hacking at its best. >They are not quite CLOS copies, since I want to avoid alot of the >complexities, and design by commitee features of CLOS. So I'm prolly >not going to be building method combination abstractions, and more >complex method selection, but I do want to get optional and keys in >the lambda lists of methods, and better debugging. Also should be >able to copy alot of the utility defines and neato redirection stuff >in the standard-class (slot-missing and the like). I'd recommend a minimal number of features. Declarative method combination is a cool thing, but a lot of work. Tiny uses (call-next-method) and that is OK to start with. This (or worse) is what every other languages uses. Also having slot-unbound be a generic function that is involved with slot-value can make delivering performance complicated. For example, in Allegro Common Lisp, (slot-value object 'slot-name) in a method, is compiled into a four argument call, something like (%slot-value slots offset object slot-name) The last 2 arguments are only used when a slot is unbound, but they effect the overhead of every slot reference. I'd be happy with the value of an unbound slot being '() or #f or #unspecified. For keywords, i wouldn't use any special syntax, unless compatibility with another language, like stk is important. In common lisp, the old style was to use :fern for the keyword "fern" but now i just use 'fern. In terms of a module system, the keyword "fern" is as much a part of the interface as a function "fern", so they should be treated the same way. >I want to retain the simplicity and clean semantics of tiny-clos >regardless. But I'll still be raiding PCL 8^) PCL is worth raiding and worth reading. >> STK is a great example of the power of tiny clos. TK objects have a >> different metaclass, but look just like other STK objects. Extending this >> idea for guile, i could imagine a MOP that unified things like foreign >> function interface, and remote method invocation. >