Comment 1 for bug 719585

Revision history for this message
Roman Marynchak (roman-marynchak) wrote :

* (macroexpand '(dolist (v '(1 2 3))))

(BLOCK NIL
  (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))
          (TAGBODY))
        (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.