2

シーケンスを反復処理し、条件付きで各要素に対して操作を実行してから収集しようとしています(ただし、基準に一致した場合のみ)。これが機能する単純化された例です。これがLispで適切かベストプラクティスかを知りたいだけです。

(loop for n in '(1 2 3 4 5)
          when (when (equal (mod n 2) 0) n )
          collect it) 

収量

(2 4)

これはうまくいきます。私には面白く見えますが、いつでもそれほど多くはありませんが、必要なものを返すために条件を整える必要があると感じているためです。照応はいつの評価に役立つ思いますが、これは私には少し人工的なようです。私は何かが足りないのですか?私はほんの数週間だけlisperでした。

編集:実際、これを適用しようとしたとき、私は少し混乱しています。私が本当にやりたいのはこれです:

(loop for n in '(1 2 3 4 5)
        when (when (equal (mod n 2) 0) n)
        collect it
        do (format t "~A" it))

しかし、2番目にそれは束縛されていないように見えます...どうすればこれを行うことができますか?

4

1 に答える 1

4

ここで照応が必要な理由がわかりません。

(loop for n in '(1 2 3 4 5) 
      when (evenp n) 
        collect n and
        do (format t "~A" n))

無条件にFORMATが必要な場合は、キーワードANDを削除します。

于 2011-01-30T14:30:15.047 に答える