4

Lisp でのループは少し面倒ですが、cl-loopマクロによって大幅に軽減されます。ただし、次のようなハックなことを繰り返し書いていることに気づきます

(cl-loop for item in some-list 
     with temp-var do (setf temp-var (some-function-of item))
     ...)

(cl-loop for item in some-list
     for x = (some-function-of item) then (some-function-of item)
     ...)

同じ方法で反復ごとに値を計算するよりエレガントな方法はありますか? cl-loopforのトップレベルで可視でなければならないことに注意してcollectくださいreturn

4

2 に答える 2

3

なぜthen条項を入れるのですか?私はかなり確信しています

(cl-loop for item in some-list
         for x = (some-function-of item)
         ...)

すべきです。

または、ループの初期化時にすべての新しい値を前もって計算することもできます。

(loop for item     in some-list
      for mod-item in (mapcar 'some-function-of some-list)
      ...)

orが複雑な式の場合は、 orsome-listを使用して変数としてバインドすることをお勧めします。withlet

于 2013-06-08T17:21:21.367 に答える
1

私はそれを書くだろう

(dolist (item some-list)
  (let ((temp-var (some-function-of item)))
    ...))
于 2013-06-07T23:15:00.093 に答える