10

ループ内で特殊変数を再バインドしたい。さて、通常、これはlet.

(let ((*read-eval* nil))
  (do-something-here))

しかし、loopマクロにはこれらの素敵なwith句があるので、そこでできるかもしれないと思いました。式(macroexpand '(loop with *read-eval* = nil))はバインディングを aletに展開することになるため、特に私の実装では確実に機能します。しかし、これが標準化された動作であることを示す標準には何も見つかりません。だから、私の質問はこれだと思います:

(loop with *read-eval* = nil
      for i from 1 to 10
      do (something-involving-the-read-function))

既存の変数を変更するために準拠する実装が必要です*read-eval*か、それとも同じ名前の新しいレキシカル変数を作成するリスクがありますか?

4

1 に答える 1