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 |當|時除非}形式selectable-clause {和selectable-clause} * [else selectable-clause {和selectable-clause} *] [end]'。你只需要改變順序爲**如果(evenp x)收集x **(儘管如果你不使用** else **,那麼當**時**會更加慣用)。 –