assert / check-type / assure...
Pascal Costanza
pc at p-cos.net
Sun Sep 22 16:55:27 UTC 2013
On 22 Sep 2013, at 16:56, Scott McKay <swmckay at gmail.com> wrote:
> On Sun, Sep 22, 2013 at 9:53 AM, Pascal Costanza <pc at p-cos.net> wrote:
> 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)))
>
>
> Yeah, this is really useful. One question -- is it also worth putting
> in (declare (type ,object ,type)) after the let-binding? Or does every
> competent compiler do the right thing once it's seen 'check-type'?
The type is only guaranteed after the check-type, so I don't think it's valid to put such a type declaration immediately after the let binding. After the check-type, it does not make much sense anymore, because immediately afterwards, the object is just returned.
Pascal
--
Pascal Costanza
The views expressed in this email are my own, and not those of my employer.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/pro/attachments/20130922/45c25afa/attachment.html>
More information about the pro
mailing list