問題3.40 – SICP(計算機プログラムの構造と解釈)その138
2009年03月27日
問題3.40
P1 : (lambda () (set! x (* x x))) P2 : (lambda () (set! x (* x x x)))
プロセスを次のように分割する。
- X1-1 : P1 の1番目の x へのアクセス
- X1-2 : P1 の2番目の x へのアクセス
- Xe1 : P1 の x への設定
- X2-1 : P2 の 1番目の x へのアクセス
- X2-2 : P2 の 2番目の x へのアクセス
- X2-3 : P2 の 3番目の x へのアクセス
- Xe2 : P2 の x への設定
以下のような値が考えられる。
X1-1 -> X1-2 -> Xe1 -> X2-1 -> X2-2 -> X2-3 -> Xe2 => 1000000 X2-1 -> X2-2 -> X2-3 -> Xe2 -> X1-1 -> X1-2 -> Xe1 => 1000000 X2-1 -> X1-1 -> X1-2 -> Xe1 -> X2-2 -> X2-3 -> Xe2 => 100000 X1-1 -> X2-1 -> X2-2 -> X2-3 -> Xe2 -> X1-2 -> Xe1 => 10000 X2-1 -> X2-2 -> X1-1 -> X1-2 -> Xe1 -> X2-3 -> Xe2 => 10000 X2-1 -> X2-2 -> X2-3 -> X1-1 -> X1-2 -> Xe1 -> Xe2 => 1000 X2-1 -> X2-2 -> X2-3 -> X1-1 -> X1-2 -> Xe2 -> Xe1 => 100
以下のように直列化した場合は、
P1 : (s (lambda () (set! x (* x x)))) P2 : (s (lambda () (set! x (* x x x))))
1000000 のみが結果となる。
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542