より一般的なレベルから物事を見ると、静的型付けと遅延関数型言語の間に自然な関係が見られると思います。静的型の主なポイントは、コンパイラの機能を通知して向上させることです。言語間の静的と動的の違いを調査し、コンパイルされたコードと解釈されたコードの間の分裂を一般的に追跡します。
そして、遅延評価のポイントは何ですか?
Peyton-Jones らによる悪名高い遡及記事では、遅延評価を、言語を純粋に関数型に保つ「ヘア シャツ」と説明しています。彼の比喩は、Haskell コミュニティの根深い意味論の理想主義を適切に伝えています。非正格評価の基本的な利点は、この表示パラダイムを容易にする方法でコードを構造化する可能性を変換することです。Bob Harper と Haskell コミュニティによって行われた悪名高い遅延評価の議論で、Harper 教授は遅延評価が実際のプログラムにもたらす課題を示しています。
「厳密な評価の最大の不満は最後に残しておきました。厳密な評価は、関数の再利用に関して根本的に欠陥があります。[...] 厳密な評価では、再帰を使用しないで、 map、filter、foldr などの再帰パターン。(一般的には)単純に機能しません。[...] 厳密な評価は、基本的に、怠惰な方法で関数を再利用することを妨げます。"
そして、遅延評価による関数の再利用の例として、Augustsson は次のように述べています。any
map
or
コーディングの。
コーディングの抽象的で表示的なスタイルを維持するために他に何が必要でしょうか? 強力な最適化コンパイラが役に立つかもしれません! したがって、静的型と遅延評価の間に技術的または必要な関連性がない場合でも、2 つの機能は同じ目標に向かっています。彼らがしばしば一緒に現れるのはそれほど驚くべきことではありません.