This is very interesting. How can we make V to be "used" without the knowledge about the origin of the expansion (how do we know that it is an iteration form which is mentioned in CLHS)? Should DOLIST be re-implemented?
BTW, I find these style warnings to be quite useful. In fact, they are _right_, because there is no code which actually _reads_ from V.
* (macroexpand '(dolist (v '(1 2 3))))
(BLOCK NIL
(TAGBODY) )
(LET ((#:N-LIST609 '(1 2 3)))
(TAGBODY
#:START610
(UNLESS (ENDP #:N-LIST609)
(LET* ((#:TMP611 (TRULY-THE (MEMBER 3 2 1) (CAR #:N-LIST609)))
(V #:TMP611))
(SETQ #:N-LIST609 (CDR #:N-LIST609))
(GO #:START610))))
NIL)
This is very interesting. How can we make V to be "used" without the knowledge about the origin of the expansion (how do we know that it is an iteration form which is mentioned in CLHS)? Should DOLIST be re-implemented?
BTW, I find these style warnings to be quite useful. In fact, they are _right_, because there is no code which actually _reads_ from V.