これらの節は、ループが指定されたLispのformに関する情報を
蓄積するようにする。蓄積された結果は、たとえばreturn節によって
無効にされない限りループから戻される。
collect formこの節はformの値をリストに集積する。collectのいくつかの
例がこのマニュアルの他のところで現れる。
語collectingはcollectの同義語であり、同様に他の蓄積節の
同義語でもある。
append formこの節は、appendを使って値のリストを結果のリストへ集積する。
nconc formこの節は、リストをコピーするのではなく破壊的に修正することで値のリスト を結果のリストへ集積する。
concat formこの節は指定されたformの値を文字列へ連結する。(これや下記の節は 標準Common Lispへの拡張である。)
vconcat formこの節は指定されたformの値をベクタへ連結する。
count formこの節は、指定されたformが非nil値へ評価される回数を数える。
sum formこの節は指定されたformの値の合計を蓄積する。formは 評価されて数にならなければならない。
maximize formこの節は指定されたformの値の最大値を蓄積する。formは
評価されて数にならなければならない。maximizeが1度も
実行されなかった場合、戻り値は未定義である。
minimize formこの節は指定されたformの最小値を蓄積する。
蓄積節は、無名の一時変数ではなく変数var(これはループ中に自動的に
let束縛される)にデータを集積するようにするために、
‘into var’を続けることができる。またinto蓄積は、
自動的には戻り値を含まない。蓄積された結果を戻すためには、ループは
finally returnのようななんらかの明示的なメカニズムを
使わなければならない。
同じ型のいくつかの蓄積節が同じ場所に蓄積することは正しい。Steeleから:
(loop for name in '(fred sue alice joe june)
for kids in '((bob ken) () () (kris sunshine) ())
collect name
append kids)
⇒ (fred bob ken sue alice joe kris sunshine june)