assert / check-type / assure...
Faré
fahree at gmail.com
Sun Sep 22 15:24:09 UTC 2013
On Sun, Sep 22, 2013 at 9:53 AM, Pascal Costanza <pc at p-cos.net> wrote:
> (defmacro assure (type form)
> (let ((object (copy-symbol 'object)))
> `(let ((,object ,form))
> (check-type ,object ,type)
> ,object)))
>
If Alexandria doesn't want it, the problem is that there doesn't seem
to be any widespread enough library for general utilities that moves
at decent speed http://xkcd.com/927/
> (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 , at keys)))
> (unless ,cons
> (setf ,cons (cons ,it ,default)
> ,alist (cons ,cons ,alist)))
> ,cons)))
>
This implementation loses badly if the alist form has side-effects.
That where you'd use the long form of define-modify-macro.
Also, assocf is a slightly confusing name considering what you
usually expect from define-modify-macro.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
You think you know when you can learn, are more sure when you can write,
even more when you can teach, but certain when you can program.
— Alan Perlis
More information about the pro
mailing list