FAST-ALIST-FREE-ON-EXIT.html -- ACL2 Version 6.3

## FAST-ALIST-FREE-ON-EXIT

Free a fast alist after the completion of some form.

    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.