Я пытаюсь перебрать последовательность, условно выполнить операцию над каждым элементом и затем собрать его (но только если он соответствует критериям).Вот упрощенный пример, который работает, я просто хочу знать, является ли это правильным или оптимальным методом для lisp:
(loop for n in '(1 2 3 4 5)
when (when (equal (mod n 2) 0) n )
collect it)
приводит к
(2 4)
Это работает, это просто смешноя, и не столько когда, но потому что я чувствую, что мне нужно подстроить условие, чтобы вернуть то, что я хочу.Я понимаю, что анафорический it работает над оценкой когда, но мне это кажется немного искусственным.Я что-то пропустил?Я был шучу всего несколько недель.
Редактировать: На самом деле, я несколько растерялся, когда пытался применить это.Что я действительно хочу сделать, так это:
(loop for n in '(1 2 3 4 5)
when (when (equal (mod n 2) 0) n)
collect it
do (format t "~A" it))
, но во-вторых, кажется, что он не связан ... как мне это сделать?