[alexandria-devel] [PATCH] lazy-evaluate the default value in ENSURE-GETHASH

Nikodemus Siivola nikodemus at random-state.net
Fri Dec 30 17:41:12 UTC 2011


On 21 December 2011 20:30, Ryan Davis <ryan at acceleration.net> wrote:
> I'm using a hash-table as a cache, and had a problem with
> ensure-gethash. Some example code / output:

I must be missing something. Why the CONSTANTP and LAMBDA instead of

(defmacro ensure-gethash (key hash-table &optional default)
  "Like GETHASH, but if KEY is not found in the HASH-TABLE saves the DEFAULT
under key before returning it. Secondary return value is true if key was
already in the table."
  `(multiple-value-bind (value ok) (gethash ,key ,hash-table)
     (if ok
         (values value ok)
         (values (setf (gethash ,key ,hash-table) ,default) nil))))

?

Cheers,

 -- nikodemus




More information about the alexandria-devel mailing list