(wat-aro)

生きてます

2015-12-03から1日間の記事一覧

SICP 3.4.2 parallel-executeの実装

これ以降やるための準備です. gauche.threadsの使い方がわからなかったのでリファレンス見ながらググって見つけたコードを理解しました. (use gauche.threads) (define (delay time proc) (lambda () (thread-sleep! time) (proc))) (define (delay-print …

SICP 問題 3.38

(define balance 100) ;; Peter (set! balance (+ balance 10)) ;; Paul (set! balance (- balance 20)) ;; Mary (set! balance (- balance (/ balance 2))) ;;a 3つのプロセスがある順序で逐次的に実行された場合のbalanceの取り得る値 ;;35,40,45,50 ;;b …

SICP 問題 3.37

(define (c+ x y) (let ((z (make-connector))) (adder x y z) z)) (define (c- x y) (let ((z (make-connector))) (adder x z y) z)) (define (c* x y) (let ((z (make-connector))) (multiplier x y z) z)) (define (c/ x y) (let ((z (make-connector))) …

SICP 問題 3.36

(define a (make-connector)) (define b (make-connector)) (set-value! a 10 'user) set-value!を評価している間で (foreach-except setter inform-about-value constraints) が評価される環境を示す環境図を書け.

SICP 問題 3.35

平方器を新しい基本制約として定義する. (define (squarer a b) (define (process-new-value) (if (has-value? b) (if (< (get-value b) 0) (error "square less than 0 -- SQUARER" (get-balue b)) (set-value! a (sqrt b) me)) (set-value! b (square a) …

SICP 問題 3.34

平方器をmultiplierを使って実装する時の問題点 (define (make-connector) (let ((value false) (informant false) (constraints '())) (define (set-my-value newval setter) (cond ((not (has-value? me)) (set! value newval) (set! informant setter) (f…

SICP 問題 3.33

入力として三つのコネクタa,b,cをとり,cの値がaとbの値の平均であるような制約を達成する手続きaverager. adderとmultiplierを繋ぐコネクタをp. 定数2に繋がるコネクタをxとした. (define (averager a b c) (let ((x (make-connector)) (p (make-connector…