« [C#]R.NETを使う(書き方) | トップページ | 住宅ローン減税、来た »

[Haskell]関数型の遅延評価って

箱を作ってみる ...

<プ> プログラム

<コ> コンピュータ

■ 命令型では

<プ> 「幅 3cm、高さ 3cm、厚さ 1cmの板を400枚、用意してください」

<コ> 「はい」 (せっせと板を作る!)

<プ> 「幅 4cm、高さ 4cm、厚さ 1cmの板を100枚、用意してください」

<コ> 「はい」 (せっせと板を作る!)

<プ> 「長さ 3cmの釘を、えーっと・・・、とりあえず1000本、用意してください」

<コ> 「はい」 (せっせと釘を作る!)

<プ> 「板を組み合わせて、釘を打って、100個の箱を作ってください」

<コ> 「はい」 (箱を組み立てる)

・・・

<コ> 「エラー、釘が足りません。終了します」

<プ> 「・・・」

処理に失敗した上に、板と釘を作った時間が無駄・・・

■ 関数型では

<プ> 「幅 3cm、高さ 3cm、厚さ 1cmの板は、こうやって作ります」

<コ> 「はい、覚えました」 (作業は何もしない)

<プ> 「幅 4cm、高さ 4cm、厚さ 1cmの板は、こうやって作ります」

<コ> 「はい、覚えました」 (作業は何もしない)

<プ> 「長さ 3cmの釘は、こうやって作ります」

<コ> 「はい、覚えました」 (作業は何もしない)

<プ> 「箱は、板をこう組み合わせて、釘をここに打って作ります」

<コ> 「はい、覚えました」 (作業は何もしない)

<プ> 「では、箱を100個作ってください」

<コ> 「はい」 (板を作る。釘を作る。箱を組み立てる。これを繰り返す)

・・・

<コ> 「できました」

<プ> 「ありがとう」

・・・

<プ> 「追加で、箱を10個、作ってください」

<コ> 「はい」 (板を作る。釘を作る。箱を組み立てる。これを繰り返す)

・・・

<コ> 「できました」

<プ> 「ありがとう」

 もし、板の作り方、釘の作り方を教えた後、予定が変わって、箱を作る必要がなくなったとしても、まだ作業を行っていないので、時間の無駄にはならない。

 必要になるまで処理を行わないのが、遅延評価・・・だと思う

« [C#]R.NETを使う(書き方) | トップページ | 住宅ローン減税、来た »

Haskell」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: [Haskell]関数型の遅延評価って:

« [C#]R.NETを使う(書き方) | トップページ | 住宅ローン減税、来た »

2019年10月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
無料ブログはココログ