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

Reply via email to