計算プログラムを書いていると,ある操作を繰り返し行う必要が出てくる.そのようなときは,強力な構造体
Nest,
NestListを使い反復操作を行うことができる.
Nestと
NestListにより固定された回数だけ関数を適用することができる.結果に変化がなくなるまで関数を適用したいときは
FixedPointおよび
FixedPointListを使用する.
Nestのような関数操作では,引数が1つの関数
f を取り,それを繰り返し適用する.そして反復の各ステップにおいて,その直前のステップの結果を
f の新たな引数として使う.
この考えを,引数が2つの関数にも使えるように一般化しておくことは大切である.その場合も,関数を繰り返し適用することができるが,得られる各結果は,次の関数適用で必要な2つの引数のうち1つしか提供することができない.そこで,別に2つ目の引数群をリストで用意しておき,そこから第2引数を逐次取り出し各ステップに当てる,という手順を使うと便利である.
Foldと
FoldListの機能を使うことで,読みやすくまた効率的なプログラムを書くことができる.場合によっては,
Foldと
FoldListを,第2引数でインデックスされている関数の族を単純なネストで生成するものと考えるとよい.