第121回 素人くさいSICP読書会(at 三田某所)

  • 会場提供ありがとうございました
  • 10分遅刻
  • 着いたときには部屋には2人しかいなかった
  • Common Lispの人は電車が止まって大幅に遅刻
  • で、結局4人
  • 問題4.39
  • hoge1e3さんが「distinct?があとのほうが速くね?」といきなりちゃぶ台返し
  • 重い処理(distinct?)を後回しにして軽い比較処理を大量にやるか、最初に重い処理で場合の数を削っておくか
  • どうもあんまり差がないらしい。わずかにdistinct?が後の方が有利?
  • 問題文とのミスマッチ
  • distinct?の定義でmemqではなくmemberを使っているのは、わざと処理重くするため?疑惑
  • 問題4.40
  • 「人に対して階を選択する前にその制限を課す」「前段の制限で既に除外されたのではない可能性だけの生成」の解釈(特に「その制限」が何を指すか)で紛糾
  • 原文を見たり
  • 使える道具がambとrequireである以上、SICPが求めている答えはこれだと思うんだけどなあ(帰ってから動作を確認した)
  • 「階を選択する前にその制限を課す」「既に除外されたのではない可能性だけの生成」かどうかは疑問だけど、「遙かに効率的」なのは間違いない
  • 問題4.42
  • 電車の中でSICPを読んでたら(そのせいで乗換駅を乗り過ごしたけど)解きたくなったので、帰ってから書いた
  • これ。一発で動いた。うれしい