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