問題3.54 – SICP(計算機プログラムの構造と解釈)その148
問題3.54 (define (mul-streams s1 s2) (stream-map * s1 s2)) (define factorials (cons-stream 1 (mul-streams factorials (add-streams ones integers)))) (stream-ref factorials 0) ; n=1 gosh> 1 (stream-ref…続きを読む
問題3.54 (define (mul-streams s1 s2) (stream-map * s1 s2)) (define factorials (cons-stream 1 (mul-streams factorials (add-streams ones integers)))) (stream-ref factorials 0) ; n=1 gosh> 1 (stream-ref…続きを読む
問題3.53 (define (add-streams s1 s2) (stream-map + s1 s2)) (define s (cons-stream 1 (add-streams s s))) s を第一要素が 1 で、残りは s 同士の和であるストリームと定義してある。 s の第二要素は、s の第一要素同士の和であるから 2 となる。 s の第三要素は、s の第二要素同士の和であるから…続きを読む
問題3.52 メモライズした場合 (load "./stream.scm") (define sum 0) ;; sum の初期値 0 (define (accum x) (set! sum (+ x sum)) sum) ;; sum を x だけ増加させて sum を返す sum gosh> 0 (define seq (stream-map accum (strea…続きを読む
ストリームの実装の働き 通常のリストと異なり、ストリームでは cdr は選択されるまで評価されて欲しくないので、cons-stream は特殊形式でなければならない。 Gauche ではストリームの実装の違いから SICP の記述が上手く動作しないので、以下のサイトから stream.scm を手に入れてストリーム手続き群を SICP の意図通りに動作するようにしておく。 SICP memo: s…続きを読む
初心者のためのフラッシュレベルアップ講座 – ボールを投げるアクション(重力、空気抵抗、はねかえり係数) のTutorial をAS3(ActionScript3) でやってみた。 ActionScript 3.0 逆引きクイックリファレンス Adobe Flash CS3対応 posted with amazlet at 09.04.03 田中 康博 林 拓也 毎日コミュニケーション…続きを読む
問題3.48 デッドロックになるプロセスの推移 デッドロックを回避するプロセスの推移(口座番号小さい a2 から先にアクセスする) (define (exchange account1 account2) (let ((difference (- (account1 ‘balance) (account2 ‘balance)))) ((account1 ‘withdraw) difference)…続きを読む
問題3.47 a. 相互排除器を使った場合 (define (make-semaphore n) (let ((counter 0) (mutex (make-mutex))) (define (the-semaphore m) (cond ((eq? m ‘acquire) (mutex ‘acquire) (if (> counter n) (begin (mutex ‘release)…続きを読む
問題3.46 cell が true の間は他のプロセスは 相互排除器(mutex)を使えない。 2つのプロセスが同時に相互排除器を獲得するとプロセスの相互排除機能が破綻する。 計算機プログラムの構造と解釈 posted with amazlet at 08.11.07 ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン ピアソンエデュケーション 売り上げランキング: 654…続きを読む
問題3.44 交換(exchange)の場合とは違い残高の差(difference)を計算する必要がなく、transfer 実行時に指定するために Ben Bitdiddle の主張の方が正しい。 問題3.45 withdraw、deposit 手続きの部分で serializer が入れ子になるので処理が終わらない。 計算機プログラムの構造と解釈 posted with amazlet at 0…続きを読む
問題3.43 残高の順序が 10, 20, 30 でなくなる場合 残高の合計の保存が破れる場合 Paul が withdraw、 deposit 実行時に、 a の値を調べるプロセスと a に新値を Set するプロセスとの間に Peter が a の値を新値に Set してしまう。 計算機プログラムの構造と解釈 posted with amazlet at 08.11.07 ジェラルド・ジェイ …続きを読む