John Hughes は、彼の記事「なぜ関数型プログラミングが重要なのか」で、「関数型プログラマーのレパートリーの中で、おそらく遅延評価はモジュール化のための最も強力なツールである」と主張しています。そうするために、彼は次のような例を提供します。
「infiniteLoop」と「terminationCondition」という 2 つの関数があるとします。次のことができます。
terminationCondition(infiniteLoop input)
ヒューズの言葉によると、遅延評価は「終了条件をループ本体から分離することを可能にします」。ここで遅延評価を使用する「terminationCondition」は、この条件をループの外で定義できることを意味するため、これは間違いなく当てはまります。terminationCondition がデータの要求を停止すると、infiniteLoop の実行が停止します。
しかし、高階関数は次のように同じことを達成できませんでしたか?
infiniteLoop(input, terminationCondition)
遅延評価は、高階関数では提供されないモジュール化をどのように提供しますか?