繰り返し(while)


Common LispにはEmacs Lispの様なwhileは存在しませんが、loopを使うか、必要ならば、簡単なマクロを書くことで実現できます。
また、ユーティリティ系のライブラリにも良く含まれています。

loopマクロで

(loop :while (not (zerop (random 10)))
      :do (princ "."))
;-> .....
;=> NIL

自作

(defmacro while (test &body body)
  `(do ()
       ((not ,test))
     ,@body))

(while (not (zerop (random 10)))
  (princ "."))
;-> ............
;=> NIL