[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends:00355] 「計算機プログラムの構造と解釈第二版」を読む会第9 回議事録
┏━━━━┓┃宿┃泊┃施┃設┃の┃皆┃様┃へ┃朗┃報┃!!┃■楽天市場の■
┃楽 ● 天┃┗━┛━┛━┛━┛━┛━┛━┛━┛━┛━┛━┛■ノウハウが■
┃トラベル┃★インターネット宿泊予約を成功へと導きます!! ■てんこもり■
┗━━━━┛★初心者でも簡単にはじめられ、管理できる。だから続けられる★
オンライン宿泊予約市場 → http://www.rakuten.co.jp/travel/panf.html
------------------------------------------------------------------------
えんどうです。
「計算機プログラムの構造と解釈第二版」を読む会 第9回議事録
2001年3月24日 13:00〜17:00
+---+
鈴木さん | | 坂さん
えんどう | | 横山さん
金山さん | | 山下さん
+---+
書記: えんどう
朗読: 鈴木さん
p.82 頑健な設計のための言語レベル
成層設計(stratified design)はプログラムを頑健(robust)にするのに役立つ。
問題 2.52
高林さん作の図形言語を使えば試せるが、
高林さんによる実装は問題 2.48 の考えとは違っているので注意が必要。
2.3 記号データ
2.3.1 クォート
言語を構成している記号そのものを操作することを可能にする。
Lispは何でも評価するが、操作した結果を評価することも可能。
クォートは関数ではなくスペシャルフォーム(特殊形式)。
等しいものは等しいもので置き換えて良いという考え(参照透明性)を破壊するので
クォートが導入されたとたんにその言語は関数型言語ではなくなる。
問題 2.53
問題 2.54
eq? は Javaの == と同じ? (Javaでは参照の比較=同じものを指しているか)
eqal? は値の比較 (Javaのequals()と同じ?)
(eq? '(this is a list) '(this is a list)) ==> false
(eq? 'a 'a) ==> true
アトムのときはtrue、リストのときはfalseとなる。
(define (equal? a b)
(eq? a b)
#t
(let ((pa (pair? a))
(pb (pair? b)))
(cond ((and pa pb) (and (equal? ((car a)(car b))
(equal? (cdr a)(cdr b)))))
((and (not pa)(not pb))(= a b))
(else #f ))))
問題 2.55
(car ''abrakadabra)
↓
(car '(quote abrakadabra))
quote
2.3.2 例:記号微分
問題 2.56
問題 2.57
(+ a b c)
↓
(+ a (+ b c))
と変形するように書けば実現できる。
問題 2.58
a. 中置記法への書き換え --> 1項めと2項めを入れ換える
b. 演算子の優先順位を知っておくこと、
結合が右結合か左結合かわかること
2.3.3 集合の表現
順序づけられないリストとしての集合
問題 2.59
(define (union-set s1 s2)
(cond ((null? s1) s2)
((element-set? (car s1) set2)
(union-set (cdr s1) s2))
(else (cons (car s1) (union-set (cdr set1) set2)))))
問題 2.60
adjoin-set, union-set で element-of-set? を使わないで済む
順序づけられたリストとしての集合
問題 2.61
(define (adjoin-set x set)
(cond ((< x (car set)) (cons x set))
((= x (car set)) set)
(else (cons (car set) (adjoint-set x (cdr set))))))
問題 2.62
(define (union-set s1 s2)
(cond ((null? s1) s2)
((null? s2) s1)
(else (let (e1 (car s1))
(e2 (car s2)))
(cond ((< e1 e2) (cons e1 (union-set (cdr s1) s2)))
((= e1 e2) (cons e1 (union-set (cdr s1)(cdr s2)))
(else (cons e2 (union-set s1 (cdr s2)))))))))
二進木としての集合
p.367
Cormen, Thomas, Charles Leiserson, and Ronald Rivest. 1990. Introduction to Algorithms.
Cambridge, MA: MIT Press.
(浅野哲夫・岩野和生・梅尾博司・和田幸一 訳, アルゴリズムイントロダクション, 近代科学社 1995)
問題 2.63
tree->list2 の方が遅く増加する。
tree->list1 では
(7 (3 (1 '() '()) (5 '() '()))
(9 '() (11 '() '())))
(append (t2l (3 (1 '() '()) (5 '() '()))
(cons 7 (t2l (9 '() (11 '() '())))))
tree->list1 では樹状再帰が起こる
-------------------------------------------
tree->list2 では
蓄積変数 result-list を空にしてからため込んで行く
c2l left (c2l ...)
次回は 問題 2.63 の復習から。
次回会場確保=>MLにて。
--
ENDO Yasuyuki <yasuyuki@xxxxxxxxxxxx>
http://www.ss.iij4u.or.jp/~eyasuyuk/ (Personal/Japanese Only)
http://www.javaopen.org/jfriends/ (Japanese Only)
------------------------------------------------------------------------
インフォシーク★オススメお花見スポット&全国各地の桜開花情報!
http://www.infoseek.co.jp/Playspot?pg=playspot_top.html&svx=971122