-
Notifications
You must be signed in to change notification settings - Fork 0
20120318
yag_ays edited this page Mar 18, 2012
·
7 revisions
元々3/17の予定でしたが、ozaさんはこの日ご都合が悪いということなので、一日ずらして3/18に開催することになりました。
いつもと時間帯が大変違っているので注意してください。朝も大変早いので、寝坊に注意。
- 3/18 8:00 -
- 今週は問題1.31から問題1.40までが範囲です => Assignments
- 第二章の問題割り振りをしておきました。ご確認ください
- 解いた問題数をplotするプログラムを作ってみました。Assignmentsを修正するときに各自更新してもらえると助かります
- https://github.com/sicp/ikoma-sicp/blob/master/syou6162/sicp-practice/src/sicp_practice/plot_num_of_problems.clj
- 来週の日程について話し合う
高階手続きの付近は初めての人はなかなか分かりづらいところだと思うので、色々練習してみるとよいと思います。SICPのaccumulateのところはClojureだとreduce
という関数で入っているので、reduce
で遊んでみるとよい練習になります。SICPだと積分のような数値計算の例ばかり出てきますが、リストなどを例にしてみると段々自分のものになってくるかなと思います。いくつか例を挙げておきます。
(reduce + 0 (range 10)) ; 45
(reduce * 1 (range 1 10)) ; 362880
(reduce cons '() '((1) (2) (3))) ; (((() 1) 2) 3)
(reduce (fn [cum s] (str cum s ", " )) "" '("a" "b" "c")) ; "a, b, c, "
- 問題1.34の評価の順序のところは少しややこしかった。
(f f)
とあったときに左側のfから展開されるが、引数で計算できるところがあればそちらを計算するのがClojureの方式。See also 「正規順序」 and 「作用的順序」 - これはまたマクロとも違う
- 問題1.37からの3問の「無限の連分数」は再帰と反復を書くときにいつもと頭の使い方が違うので注意が必要。yag神の説明が分かりやすい