Le 26/07/2012 18:29, Alexander Burger a écrit :

Note that (; 'objContent containers) is not correct, because the quoted
symbol 'objContent' doesn't evaluate to an entity.

Better would be (; objContent containers). But this wasn't a problem
here, because both expressions still give NIL.

Thanks for the hint. My "non simplified" code must not have the quote, because I was able to add a second element to the list. I simply didn't check this case here, as I got the expected result...

(zap objContainer)

This is the problem! 'zap' should generally not be called in application
code, because it does a hard-core removal of the object, without taking
care of relations.

Use (lose!> objContainer) to clean up all relations as needed, and mark
the object for final deletion. This will happen at the next call of

    (load "@lib/too.l")

'dbgc' is usually called by a process started from a nightly cron job,
and internally calls 'zap' if the object is not referenced from other

Great info! Thanks!

: (show objContent)
{3} (+Content)          # The joint is gone
    data 25

: (show objContainer)
    T                    # Object is marked for deletion
    contents ({3})
    data 52
-> {2}

    (Note that the back-link 'contents ({3})' still exists in the "lost"
    object. So you still can undo the 'lose>' here with

       (keep!> objContainer)

    and the full joint would be re-established)

And this could be useful, too!
I didn't see info about those two messages in the database tutorial (I just fount it in the doc for +Entity... Didn't think about searching there...)

: (dbgc)  # Call garbage collector
-> 2

:  (show objContainer)
!? (val "X")
{2} -- Bad ID           # Object is gone
{2} ?

Please consider that I'm very new to picolisp (and to lisp more
generally) so I may make basic mistakes.

No problem! :)

I knew it was a basic mistake ;-)

Thanks again.

Laurent ARTAUD (laurent.art...@free.fr)
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to