Scieneer Common Lisp 1.3.9 online documentation

ext:defun-cached (name &key :hash-function :hash-bits :init-form :values) args &parse-body (body decls doc)[Macro]

defun-cached (name {key value}*) ({(arg-name test-function)}*) form*

Define a hash cache that associates some number of argument values to a result value. The test-function paired with each arg-name is used to compare the value for that arg in a cache entry with a supplied arg. The test-function must not error when passed nil as its first arg, but need not return any particular value. test-function may be any thing that can be place in car position.

Name is used to define functions these functions:

<name>-cache-invalidate
Invalidating all entries.
<name>-cache-clear
Reinitialize the cache, invalidating all entries and allowing the arguments and result values to be GC'd.

These other keywords are defined:

:hash-bits <n>
The size of the cache as a power of 2.
:hash-function function
Some thing that can be placed in car position which will compute a value between 0 and (1- (expt 2 <hash-bits>)).
:values <n>
The number of values cached.
:init-form <name>
The defvar for creating the cache is enclosed in a form with the specified name. Default progn.