Sujet : Re: How do you insert declarations into loops?
De : No_spamming (at) *nospam* noWhere_7073.org (B. Pym)
Groupes : comp.lang.lispDate : 02. Jul 2024, 12:24:36
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v60kh1$1jp18$1@dont-email.me>
User-Agent : XanaNews/1.18.1.6
Thomas A. Russ wrote:
> Example: This function loops over a list of associations
> collecting the cdrs.
>
> (defun list-cdrs (list)
> (loop for (unwanted-var . wanted-var) in list
> collect wanted-var))
>
> When I compile list-cdrs, I get an "unused lexical variable, UNWANTED-VAR"
> message (this is fine.). Normally, if I wanted to inhibit this
> warning I would stick a (declare (ignore unwanted-var)) in the
> beginning of the function body immediately following the declaration.
> It doesn't seem that you can do this using loop.
The solution is not to introduce an ignore declartion, but instead to
use a hack in the destructuring pattern matcher:
(defun list-cdrs (list)
(loop for (NIL . wanted-var) in list
collect wanted-var))
(map cdr '((a . 2) (b . 3)))
===>
(2 3)