Hatena::Groupsicp

SICP読書メモ

 | 

2009-03-22

4.2 遅延評価 01:29

4.2.1 正規順序と作用的順序

Schemeは作用的順序評価だけど,これまでに作った処理系に手を加えることで、正規順序評価

(遅延評価)を試す.

仕様としては

・基本手続きは作用的順序評価

・合成手続き(lambda式)は正規順序評価

下記の変更を加える

・lambda式の評価時は,引数を遅延オブジェクトに変換するだけで評価は遅延させる.

 - 遅延オブジェクト = (cons 実際の式 . 環境)

・if式の条件部にあたる式は強制評価を行う.

・基本手続きの評価時は、引数の強制評価を行う.

 - 強制評価 = (eval 実際の式 環境)

その名の通り、式の評価を必要になるまで遅延させる.

意外に簡単


;;問4.27 下記の式を遅延評価させるとどうなるか ;;;
(define count 1)
(define (id x)
  (set! count (+ count 1))
  x)

(print count)
(define w (id (id 10)))
(print count)
(print w)
(print count)

1
2
10
3

w が遅延オブジェクト(実体 => (id 10)) に束縛されるので
評価される度に(id x)が実行される。のかな。

BuffieBuffie2016/05/10 23:01An intleligent point of view, well expressed! Thanks!

TrixTrix2016/05/14 09:37Ova ekipa je zestoko pokarala Lenovo Srbija i sad krade na stranici Moment Power, nagrada je 3.000e!VA:F <a href="http://muitckjrnoy.com">[16]120_1..69please</a> wait...(1 vote cast)VA:F [1.9.20_1166](from 0 votes)

トラックバック - http://sicp.g.hatena.ne.jp/tkmr2000/20090322
 |