在常见的lisp循环宏中使用collect进行过滤

时间:2016-04-23 14:49:16

标签: loops common-lisp list-comprehension

我正在尝试使用循环宏过滤列表。如果我做

(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),但这不合法。出于某种原因,我无法在其他文档中找到适当的语法。这可能吗?

1 个答案:

答案 0 :(得分:6)

正确的语法是

(loop for x in (list ...) when (evenp x) collect x)