1
ループマクロを使用してリストをフィルタリングしようとしています。私がしている場合一般的なlispループマクロでの収集によるフィルタリング
(loop for x in (list 1 2 3 4) collect x)
私はちょうど同じリストを取得して意味があります。しかし、私は
(loop for x in (list 1 2 3 4) collect x if (evenp x))
ような何かをして(2 4)
バックを取得したいと思い、それは法的ではありません。何らかの理由で、私はこれに関する適切な構文が他の文書では見つけられません。これは可能ですか?
ですHyperSpecはかなり合理的なドキュメントです。 [** loop **](http://www.lispworks.com/documentation/HyperSpec/Body/m_loop.htm)のエントリには文法が含まれており、関連するプロダクションは 'conditional :: = {if | |とき| [else selectable-clause {and selectable-clause} *] []] [end] '。 ** if(evenp x)がx **を収集する場合(** else **を使用していない場合は**、**はもっと慣用的な場合は**)順序を変更するだけです。 –