Я только что увидел ответ Сильвестра на этот вопрос, и мне показалось странным, что цикл имеет двоеточия везде.
Обычно я писал
(loop for n below 10 do (princ n) (terpri))
вместо
(loop :for n :below 10 :do (princ n) (terpri))
После некоторых тестов я вижу, что с первым циклом символы for
, below
и do
затем являются частью cl-user (edit : на самом деле не do
, только два других, вероятно, потому что do
тоже макрос в пакете cl), не со вторым. Точно так же только 'X будет частью cl-user, а не ':X. Функция symbol-package
говорит мне, что последний находится в пакете ключевых слов.
Итак, первый цикл без двоеточий выглядит для меня намного симпатичнее, поэтому я хотел бы знать, являются ли предыдущие замечания веской причиной для использования вместо него второго. То, что символы «включаются» в текущий пакет, выглядит довольно безобидно, но, возможно, я упустил из виду последствия.
Есть идеи?
(loop :for element :below below-average :counting (> element above-average))
легче правильно прочитать, чем(loop for element below below-average counting (> element above-average))
- person Sylwester   schedule 13.02.2015