Major Section: HONS-AND-MEMOIZATION
Logically, (fast-alist-free-on-exit alist form)
is the identity and returns
form
. Also see fast-alist-free.
Under the hood, this essentially expands to:
(prog1 form (fast-alist-free alist))
In other words, alist
is not freed immediately, but instead remains a fast
alist until the form completes. This may be useful when you are writing code
that uses a fast alist but has many return points.
See also the macro fast-alists-free-on-exit
defined in the community book
"books/centaur/misc/hons-extra.lisp"
, which can be used to free several
alists.
The community book "books/centaur/misc/hons-extra.lisp"
extends the b*
macro
(defined in the community book "books/tools/bstar.lisp"
) with the
free-on-exit
pattern binder. That is, after executing
(include-book "centaur/misc/hons-extra.lisp" :dir :system)
, the form
(b* (... ((free-on-exit a b c)) ...) ...)
causes a
, b
, and c
to be freed when the b*
completes, but they
remain fast alists until then.