Hi, It seems to me that ASSERT and CHECK-TYPE are not as convenient as they could be. In particular, ISLISP seems to have a better alternative in ASSURE. ASSURE is easy to define: (defmacro assure (type form) (let ((object (copy-symbol 'object))) `(let ((,object ,form)) (check-type ,object ,type) ,object))) The important difference is that the value of form is returned, which allows using ASSURE inline in expressions: (1+ (assure number x)) …in place of the more lengthy: (progn (check-type x number) (1+ x)) Is ASSURE, or something similar, part of any utility library, like Alexandria or the likes? On an unrelated note, I recently came up with the following utility macro which I found very useful: (defmacro assocf (item alist &optional default &rest keys &key test test-not key) (declare (ignore test test-not key)) (let ((it (copy-symbol 'it)) (cons (copy-symbol 'cons))) `(let* ((,it ,item) (,cons (assoc ,it ,alist ,@keys))) (unless ,cons (setf ,cons (cons ,it ,default) ,alist (cons ,cons ,alist))) ,cons))) Again, is something like this already part of some utility library? Thanks, Pascal -- Pascal Costanza The views expressed in this email are my own, and not those of my employer.