Универсальный цикл LOOP

(loop описатель-переменной* [условие-завершения] оператор*)

описатель-переменной ::=

with var1[ = form1] [and var2[ = form2]]...
Введение и инициализация локальных переменных.
for var [{from | upfrom | downfrom} form1]
  {to | upto | below | downto | above} form2 [by form3]
Арифметический цикл.
for var {in | on} form1 [by step-fun]
Цикл по списку.
for var across vector
Цикл по вектору или строке.
for var being each hash-key in hash-table
  [using (hash-value other-var)]
Цикл по хэш-таблице.

условие-завершения ::= while form | until form | repeat form
  | always form | never form | thereis form

оператор ::=

do form...form
Последовательность форм (тело).
return результат
Завершает цикл, возвращая из него значение формы результат.
{collect | append | nconc} form [into var]
Накопление списка.
{count | sum | maximize | minimize form [into var]
Накопление числа.
{if | when | unless} p оператор...оператор
  [else оператор...оператор] [end]
Условный оператор.
Пример
(loop for i upfrom 1 to 10
  when (oddp i)
  collect i)
(1 3 5 7 9)

(mapcar #'funcall
        (loop for i below 4 
              collect (lambda () i)))
(4 4 4 4)			; не (0 1 2 3)!