Do you think you might want to compute derived index updates based on
the value in a transient slot?
The implementation I've chosen is a little different than described
last night:
(defpclass foo ()
((slot1 :accessor slot1 ...)
(slot2 :accessor slot2 ...)
(slot3 :accessor slot3 ...)
(derived :reader foo-value :derived-fn my-fn :slot-deps (slot1
slot3))))
:index t is not necessary - in fact it is ignored. :slot-deps are
also not required, but the derived index is updated on any slot write
if that slot is not transient, set-valued or an association. We can
add those last three slot types into the mix if necessary, but I'm
trying to avoid too much complex computation taking place during slot
writes (self-deadlock, etc) for the time being.
Also, I'm allocating persistent storage for each derived value - this
is so it is easy to remove the prior value when the value has
changed. We can optimize this away later, but it adds enough to
complexity I wanted to get derived slots working first.
Cheers,
Ian
On Mar 21, 2008, at 6:40 PM, Alex Mizrahi wrote:
IE> Does anyone actually use derived indices in the current slot
indexing
IE> model?
add-class-derived-index?
yep, we are using them, as they are only way to make some non-trivial
lookups
_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel
_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel