20120421 - sicp/ikoma-sicp GitHub Wiki

20120421

Time

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

  • 4/21 8:00 -

連絡

  • 今週は問題2.11から問題2.25までが範囲です => Assignments
  • syou6162は残りの問題2.6もやる

Agenda

  • 来週の日程について話し合う
  • なるべく土日でやる方向でいくが、予定が合わず次回は1ヶ月...とかなると困るのでバックアッププランとして平日の夜(20:00-)も聞く感じにする
  • スケジューリング専用のページに大分先のところまで書いておいたので、埋めていってください
  • 今週は試験的に1週で15問程度と増やしてみたが、来週以降はどうするか
  • 次回以降も15問解いてくるようにするが、2時間を越えるようであればそこは打ち切る方向で

疑問点

  • 前回の問題2.4がよく分からない by keisks
  • 以下、syou6162補足
  • 前回メモによると「linked listやarrayじゃなくてclosureでconsとかを表現」と書いてある
  • が、SICP的にはclosureは後の章で出てくるので、closureという言葉を使わずに説明できるとうれしいですね
  • 関数の引数(args)と関数の中身(body)のpairでclosureって説明だとダメ...なんですかね?(たぶん「環境」についての説明が抜けてる)

補足

ドット末尾記法

問題2.20のドット末尾記法ですが、clojureでは、例えば任意個の数値の和を取るような関数を

(defn my-sum [x & y]
  (if (nil? y)
    x
    (apply my-sum (+ x (first y)) (rest y))))

(my-sum 1 2 3 4 5) ; 15

のように書くことができます。schemeのドット末尾記法と同じく最後のパラメタの残りは引数のリストとなります。

  • Clojure - special_forms

感想

  • 後半はまたもや再帰祭りの予感...!
  • 問題2.24はいかにも典型的な間違いをやった by syou6162