while ループを記述するもう一つの一般的な方法は、カウンタが 0
より大きいかどうかを判定するようにテストを記述することです。カウンタが 0 より大きい限り、ループは繰り返されます。しかし、カウンタが 0
以下になると、ループは停止します。これが機能するためには、カウンタが最初から 0
より大きく、かつ繰り返し評価される式によって次第に小さくなっていく必要があります。
テストには (> counter 0) のような式が用いられ、counter の値が 0 より大きい場合は真として t
を、counter の値が 0 以下の場合は偽として nil を返します。数値をどんどん小さくしていく式としては、(setq
counter (1- counter)) のような単純な setq
が挙げられます。ここで 1- は、引数から 1 を引く Emacs Lisp の組み込み関数です。
デクリメントする while ループのテンプレートは次のようになります。
(while (> counter 0) ; true-or-false-test body... (setq counter (1- counter))) ; decrementer