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

  • 会場提供ありがとうございました
  • 参加者4人
  • お菓子がいっぱい
  • 問題5.12
  • 文章の意味が超ナゾという疑問が先週解けたらしいので教えてもらった
    • 誤:(assign gotoなどの)命令の型で,格納されたすべての(異る)命令のリスト:
    • 正:(assign gotoなどの)命令の型でソートされた,すべての(異る)命令のリスト:
    • 「格納された」に相当する部分は今の原著では「sorted」になっている。翻訳時に英文がstoredと間違っていたのか、翻訳時にsortedをstoredに見間違えたのかはわからないが、誤訳であることには違いない
    • 点の位置もおかしい
    • (異る)は「重複を除く」という意味。これもちょっとわかりにくい
    • 次の文章の「入り口」も少しわかりにくいが、要するにgoto先のラベルですね
    • これで問題の意味はわかった。ばんざい
  • 「ソート」は順番を並べ替えるというよりは命令の型ごとにグループ化するというニュアンスっぽい。問題の意味的に
  • 「save,restoreされる(異る)レジスタのリスト」の情報は、最初に取得した「すべての命令」の中のsaveとrestoreに含まれちゃう気がする。情報量的に
  • 実装の方針
    • assembleを実行したときに情報を格納するようにする。すなわちextract-labelsの中に情報取得のロジックを埋め込む。継続の引数を一つ増やしてそこに情報を格納
    • 情報を受け取るインタフェースをmake-new-machine(ハードウエアっぽいやつ)に追加。最初のletで情報取得用の変数を用意し、マシンに情報を読み込むためのメッセージと外から情報を読み出すためのメッセージをディスパッチの部分に追加する
  • ということがわかった段階で面倒になって放置プレイ><
  • SICPの後に何を読むかという話

Essentials of Programming Languages, 2nd Edition

Essentials of Programming Languages, 2nd Edition

Essentials of Programming Languages (The MIT Press)

Essentials of Programming Languages (The MIT Press)

  • 一番有望そうだったのが↑
  • TAPL(Types and Programming Languages (The MIT Press))だとSICPとのギャップが大きすぎるので、TAPLを読むなら上の本を間にはさんだほうがいいらしい
  • 読書会ネタじゃないけど、実用的なScheme本として名前が挙がった本↓

Lisp in Small Pieces

Lisp in Small Pieces

  • 毎週水曜日はきついので、SICPを読み切ったらたぶんやめるというのが一番ありそうな選択肢ではあるけど