Subject: Re: Setting a property in a symbol. From: Erik Naggum <erik@naggum.net> Date: Sun, 26 May 2002 14:05:58 GMT Newsgroups: comp.lang.lisp Message-ID: <3231410756403264@naggum.net> * Adam Warner | There is no way using get to distinguish an absent property from one | whose value is default. Yes, there is. Let the default value be a fresh or unique object. This is pretty obvious, so a much better solution to the whole problem is this shadowing redefinition of the standard function: (shadow 'get) (defun get (symbol property &optional default) (let* ((fresh (cons t t)) (prop (cl:get symbol property fresh))) (if (eq fresh prop) (values default nil) (values prop t)))) If this function should not cons, wrap (cons t t) in a load-time-value. -- In a fight against something, the fight has value, victory has none. In a fight for something, the fight is a loss, victory merely relief. 70 percent of American adults do not understand the scientific process.