[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 04/03 00:27 / Filesize : 185 KB / Number-of Response : 878
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【SICP】計算機プログラムの構造と解釈【Scheme】



758 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 02:32:03 ]
755はちょっと違うな

遅延評価をしない猫は、獲物を捕った時点でそれがねずみならば、そのねずみを口に持っていくまでの間に小判にすり替えられても気づかず口に入れてしまう
一方遅延評価を行う猫は、獲物を捕ってそれが正に口に入らんとする時点でねずみかどうかを確かめてから口に入れる

こういうと一見、遅延評価を行う猫の方が利口に見えるが、例えばねずみを再帰的に食べる場合、つまり何口かに分けてねずみを食べる場合、
前者は最初にねずみと確認すれば後は確認せずにパクパクと食べ続けるが、後者は遅延評価するがゆえんに一口目二口目と口に入れるごとにそれがねずみであるかを確認する
現実問題として食べている間にねずみが別の何かにすり替わることはまずありえなく、仮に食べるのに十口程かかるねずみを手に入れた場合、後者は十倍無駄な動作をする事になる

しかし、近くに、他の猫の食べているねずみを小判にすり替える事を生業とする猫がいる事も一生に一度はあるかもしれない。そういった時は遅延評価をして食べるのが危機管理というものだ
とはいえ、一生に一度あるかどうかも分からない時のために毎回遅延評価するのはあまりに無駄が多いと言える

こういった遅延評価の無駄を削る方法がメモ化(memoization)である
つまり、そういったいじわるな猫が周囲にいない状況では、今食べているこのねずみは今後ねずみであるか確認しなくともねずみであり続けると言う事を記憶するのである
そうすれば今食べているものがねずみであるかどうかを確認するのにいちいち匂いや形から考えなくとも、記憶からそれがねずみであると言う事実を持ってくるだけで済む

それはやはり遅延評価をしないよりかは幾分ロスがあるかもしれないが、そのロスは記憶にアクセスするだけの短時間であるし、近くにいじわるな猫がいても対処できる臨機応変さも兼ね備えている非常に優秀な猫と言える

目の前の猫が遅延評価をする猫であるかどうかを確かめるには、ねずみを食べている途中にそれを小判にさしかえてやればよい。そこで食べるのを中止したのならばそれは遅延評価をする猫である






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<185KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef