Kenny Tilton writes:
Food for thought: slot-value is a back door. Not sure what that food means, tho, because for a while Cells /was/ mop-based and slot-value was not a back door. But that was slower and less portable. But those are practical concerns, not ideological. But consistency here might be a Good Thing if only for consistency's usual merits (hobgoblins notwithstanding).
More food: when slot-value was /not/ a backdoor, it was a nuisance to programming cells. I had to set a *backdoor* special to actually get the raw slot-value in Cell internals. ie, slot-value-using-class and its setter both had to (in all specializations) keep an eye out for *backdoor* access. OK, it is not the end of the world, but it may have been a Message From God, viz, that perhaps the transparency thing (making it seem as if CLOS does Cells) is a mistake: CLOS does /not/ do Cells. Cells by this thinking are not strictly an /extension/ of CLOS, but rather a distinct OO capability implemented thru CLOS. Less profoundly, should Cell internals ever care about slot bounditude, we'll be back into *backdoor* tricks.
Hmmm ... maybe you're right. Exporting md-slot-value and making it bottom out to calling slot-value would make this argument stronger. Then, if you're using Cells, just use the md- variations for everything. If you're consuming object that you don't know too much about (are they Models?), you really don't want to be doing things like calling slot-value on them anyway.
Having to hack MCL folks' CLOSes becomes just another straw on the back at this point.
Thoughts?
Well, I do think it's more like a bug in MCL, since it's in line with the MOP they implement, but on reconsideration, the md- solution might be better. Since Cells really isn't integrated into CLOS, having this little feature integrated would be weird; the normal backdoor around it would be to write a method on s-m-u-c that circumvents Cells'. But since model classes aren't instances of a model-class metaclass, the backdoor would be to get an :around method around the Cells :around method ... okay, that might just be a message from Rakim (God MC).
--- /|_ .---------------------------------. ,' .\ / | It's been a long time, | ,--' _,' | I shouldn'ta left you | / / | without a dope rhyme to step to | ( -. | `---------------------------------' | ) | (`-. '--.) `. )----'