Skip to content
yag_ays edited this page Mar 18, 2012 · 7 revisions

20120318

元々3/17の予定でしたが、ozaさんはこの日ご都合が悪いということなので、一日ずらして3/18に開催することになりました。

Time

いつもと時間帯が大変違っているので注意してください。朝も大変早いので、寝坊に注意。

  • 3/18 8:00 -

連絡

Agenda

  • 来週の日程について話し合う

疑問点

高階手続きの付近は初めての人はなかなか分かりづらいところだと思うので、色々練習してみるとよいと思います。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神の説明が分かりやすい

Clone this wiki locally