*Zap
- A global variable holding a list of lists and a pathname. If given, and the
value of
*Solo is NIL,
external symbols which are no longer accessible can be collected in the CAR of
the list, e.g. during DB tree processing, and written to that file at the next
commit. A (typically periodic) call
to zap_ will clean them up later.
: (setq *Zap '(NIL . "db/app/Z"))
-> "db/app/Z"
(zap 'sym) -> sym
- "Delete" the symbol
sym. For internal symbols, that means to
remove it from the internal hash table, effectively transforming it to a
transient symbol. For external symbols, it means to mark it as "deleted", so
that upon a later commit it will be
removed from the database file. See also intern.
: (de foo (Lst) (car Lst)) # 'foo' calls 'car'
-> foo
: (zap 'car) # Delete the symbol 'car'
-> "car"
: (pp 'foo)
(de foo (Lst)
("car" Lst) ) # 'car' is now a transient symbol
-> foo
: (foo (1 2 3)) # 'foo' still works
-> 1
: (car (1 2 3)) # Reader returns a new 'car' symbol
!? (car (1 2 3))
car -- Undefined
?
(zapTree 'sym)
- Recursively deletes a tree structure from the database. See also
tree, chkTree and prune.
: (zapTree (cdr (root (tree 'nm '+Item))))
(zap_)
- Delayed deletion (with
zap) of
external symbols which were collected e.g. during DB tree processing. An
auxiliary file (with the name taken from the fin of the value of *Zap, concatenated with a "_"
character) is used as an intermediary file.
: *Zap
-> (NIL . "db/app/Z")
: (call 'ls "-l" "db/app")
...
-rw-r--r-- 1 abu abu 1536 2007-06-23 12:34 Z
-rw-r--r-- 1 abu abu 1280 2007-05-23 12:15 Z_
...
: (zap_)
...
: (call 'ls "-l" "db/app")
...
-rw-r--r-- 1 abu abu 1536 2007-06-23 12:34 Z_
...
(zero sym ..) -> 0
- Stores
0 in the VAL's of all argument symbols
sym. See also one,
on, off and onOff.
: (zero A B)
-> 0
: A
-> 0
: B
-> 0