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

Ryan Davis ryan at acceleration.net
Tue Jan 3 14:25:38 UTC 2012


No, you're not missing anything, your version is better. I just didn't 
think that through. I was combining a similar function from a personal 
utils library, and my macro used lambdas to pass the default value to a 
driver function. I also recently learned about constantp and just got 
excited :).

Thanks,

Ryan Davis
Acceleration.net
Director of Programming Services
2831 NW 41st street, suite B
Gainesville, FL 32606

Office: 352-335-6500 x 124
Fax: 352-335-6506

On Friday, December 30, 2011 12:41:12 PM, Nikodemus Siivola wrote:
> 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