[elephant-devel] Re: Array slots
Ian Eslick
eslick at media.mit.edu
Tue Apr 29 19:39:27 UTC 2008
Alex is exactly right, as pointed out by the docs. set-valued slots
partially solve this annoyance with persistent collections stored in
slots, but they are unordered.
Unfortunately aref is not a generic function so you'd have to play
package naming games to hijack it which I abhor. I'm open to
suggestions on ways to handle such an idiom, but nothing has come to
mind yet. A macro to create slot accessors that do all the
bookkeeping automatically might be useful as an option for users.
Ian
On Apr 29, 2008, at 3:24 PM, Alex Mizrahi wrote:
> LPP> (32): (setf (aref (slot-value sch 'a) 2) 1)
> LPP> 1
>
> LPP> (33): (slot-value sch 'a)
> LPP> #(0 0 0 0)
>
> how do you thik it is supposed to work?
> to my knowledge, elephant does not hijack (setf aref), so (setf
> aref) just
> modifies a temporary array returned by a slot read.
> db is written _only_ on (setf slot-value), if you do not explicitly
> write to
> slot, value in database won't be updated.
> it seems this stuff is in documentation:
>
> ----
> 2.7 Persistent collections
>
> The remaining problem outlined in the section on Serialization is that
> operations which mutate collection types do not have persistent side
> effects. We have solved this problem for objects, but not for
> collections
> such as as arrays, hashes or lists. Elephant provides two solutions
> to this
> problem: the pset and btree classes. Each provides persistent
> addition,
> deletion and mutation of elements, but the pset is a simple data
> structure
> that may be more efficient in memory and time than the more general
> btree.
> ----
>
>
>
> _______________________________________________
> elephant-devel site list
> elephant-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/elephant-devel
More information about the elephant-devel
mailing list