[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends:00535] 第18回議事録
こんにちは鈴木@二村研です。
先週土曜日の読書会議事録を送ります。
2002年1月26日 第18回 議事録
今回は p82の復習から。
山下さん えんどうさん
-----------------------
| |横山さん
| |
| |
| |
-----------------------
鈴木 和田先生
復習1. p83
((Norah 17) (Molly 14) (Anna 11) (Lauren 11) (Charlotte 8))
はSussmanの姪。年齢も日本語版発行の時点の年齢に修正されてる。
復習2.
eq?, equal?の話
(eq? '(this is a list) '(this is a list))
が False ではなく、Trueになる処理系もある。==> HLISP
hash-consによって以前に作成されたconsかをいちいち調べるというもの。
もういちどequal?をかきなおす
(define (equal? a b)
(or (eq? a b)
(and (pair? a) (pair? b)
(equal? (car a) (car b))
(equal? (cdr a) (cdr b)))))
実行すると、
==> (equal? '(this is a list) '(this is a list))
#t
復習3. 問題 2.55
==> (car `,'(abracadabra))
abracadabra
復習4. 問題 2.58(b)
(transformation '(x + y * z * a + b * c))
==> (+ (+ x (* (* y z) a)) (* b c))
となるようにしたい。
引き算、割り算を考える。
復習5. 問題 2.60
「使いたくなる応用はあるだろうか?」
→ 結局みつからずじまい。
復習6. 問題 2.61、問題 2.62
set は順序づけられたリストとしての集合
(define (adjoin-set x set)
(cond ((null? set) (list x))
((< x (car set)) (cons x set))
((= x (car set)) set)
(else
(cons (car set) (adjoin-set x (cdr set))))))
復習7. 問題2.64
上手く説明する部分は今回も宿題。
復習8. p94とp96
通信文がp94では18文字なのに、p96では17文字になっている。
Aが1文字少ない。
復習9. 第3章の絵
まず p223 の下を参照
(define (make-procedure parameters body env)
(list 'procedure parameters body env))
parameters,body 左の目玉の矢印
env 右の目玉の矢印
まあこの部分は4章をやってからやりましょう。
復習10. ディジタル回路のシミュレータのコードの理解
(define a (make-wire))
(define b (make-wire))
(define c (make-wire))
(or-gate a b c)
(add-action! a1 or-action-procedure)==>
(0 (5 (#<CLOSURE #f #@lambda (set-signal! output new-value)>) --> front-ptr
#<CLOSURE #f #@lambda (set-signal! output new-value)> --> rear-ptr
))
(add-action! a2 or-action-procedure)==>
(0 (5 (#<CLOSURE #f #@lambda (set-signal! output new-value)> --> front-ptr
#<CLOSURE #f #@lambda (set-signal! output new-value)>)
#<CLOSURE #f #@lambda (set-signal! output new-value)> --> rear-ptr
))
add-actionしているのは2回だけなのに、
actionが2つ(1回目のadd-action!)、3つ(2回目のadd-action!)
に見えるのはキューに rear-ptr,front-ptrと両方保存していて
それを表示しているから。(make-queue参照)
(define a (make-wire))
(define b (make-wire))
(define sum (make-wire))
(define carry (make-wire))
(simple-probe 'sum sum)
(simple-probe 'carry carry)
(half-adder a b sum carry)
==> (set-signal! sum 1)
sum 0 New-value = 1
done
==> (set-signal! a 1)
done
==> (set-signal! b 1)
done
==> (propagate)
sum 3 New-value = 0
carry 3 New-value = 1
sum 8 New-value = 1
sum 8 New-value = 0
done
復習11. 制約システム
(define C (make-connector))
(define F (make-connector))
(celsius-fahrenheit-converter C F)
==> (probe "Celsius temp" C)
==> (probe "Fahrenheit temp" F)
==> (set-value! C 25 'user)
Probe: Celsius temp = 25, informant-name = user
Probe: Fahrenheit temp = 77, informant-name = adder
done
==> (forget-value! C 'user)9
Probe: Celsius temp = ?, informant-name = #f
Probe: Fahrenheit temp = ?, informant-name = #f
done
==> ;Evaluation took 0 mSec (0 in gc) 2 cells work, 0 env, 33 bytes other
9
==> (set-value! F -40 'user)
Probe: Fahrenheit temp = -40, informant-name = user
Probe: Celsius temp = -40, informant-name = multiplier
done
-40はカ氏でもセ氏でも同じ値
------------------------------------------------------------------------
ネットを通して時代を見る!? 写真付きで分かりやすさ倍増!!
http://www.infoseek.co.jp/Keyword?pg=ranking.html&svx=971122