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