[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