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

  • 会場提供ありがとうございました
  • 今日も雑談が少なかったなあ。問題をまじめにやってたわけだけど
  • 問題4.76
  • ストリームを混ぜるところで「二つ」ということにこだわりすぎて勘違いしてた。二つを比べるのはフレーム
  • キモは、同じframe-stream(andの直前のframe-stream)でqevalしたものをマージする点
  • hisaさんの解答↓


  • 問題4.77
  • hisaさんは、conjoinでnot節を見つけたら後の方になるよう節の順番を変えるように実装
  • なんだかなーと思ったけど、notがフィルタとして実装されている時点でこれよりましな解法をみんな思いつけない
  • そもそもnotはorの中で使えるの?という話に→orの中ではnotはどこにも使えない
  • orとnotの組み合わせはandとnotの組み合わせに変換できるのでは?→それだ!→変換すると必ずnotが最初に出てくるようになるのでアウト
  • (not (job ?x (computer programmer)))で欲しい答えは(and (job ?x ?y) (not (job ?x (computer programmer))))とすれば出る
  • 1番目の要素を特別扱いするかどうかという問題が発生
  • 処理系は1番目の要素であろうと特別扱いしないが、表明は明らかに最初の要素に意味を持たせている
  • lisp-valueでは、述語が扱えるデータかどうかという問題もある
  • 結局、notやlisp-valueはキモいという結論にしかならない
  • おそらく、そうしたことを感じてほしいという設問なのだと思う
  • 問題4.78
  • 問題文を読んだだけ
  • 問題4.79
  • 問題文を読んだだけ
  • この評価器は変数名が一意になるよう変えている。290ページのcontract-question-markで変数名にハイフンと数字を付与
  • 「Pが真と思うなら」の例で「天気予報が当たるなら」とか「神様がいるとすれば」とか
  • これで第4章はおわり。次回から第5章