SICP 孤読書会 - SICP を読む前の準備
SICP を読む際に準備したものを書いておきます。
SICP
洋書もありますが、日本語で書かれた計算機プログラムの構造と解釈の第二版を使います。
- 作者: ジェラルド・ジェイサスマン,ジュリーサスマン,ハロルドエイブルソン,Gerald Jay Sussman,Julie Sussman,Harold Abelson,和田英一
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/02
- メディア: 単行本
- 購入: 35人 クリック: 1,149回
- この商品を含むブログ (489件) を見る
ちなみに、洋書の方はWebで無料公開されています。
紙と鉛筆
SICP には練習問題が大量にあります。ちゃんと解いて読み進めていくので紙と鉛筆(ボールペン)は必須。
Gauche
SICP に載っているサンプルプログラムは Scheme で書かれています。 そのため、自分の環境にも Scheme の処理系を入れておきます。
ということで Gauche をインストール。
$ brew install gauche
Mac なんで Homebrew でサクっと入りました。
slib
デバッグトレースをするため、slib をインストール。
brew にパッケージが存在しないのでソースからインストールします。
Scheme処理系のインストールとデバッグトレース - somemo's diary
を参考に問題なくインストールできました。
Gauche でのデバッグについては Higepon さんの
Gauche(Scheme) でデバッグをする4つの方法 - Higepon’s blog
が参考になるかと思います。
Emacs
コードを書くエディタ。普段から Emacs を使っています。
ここ に書かている Gauche 用の設定を追加しました。
(setq process-coding-system-alist
(cons '("gosh" utf-8 . utf-8) process-coding-system-alist))
(setq scheme-program-name "gosh -i")
(autoload 'scheme-mode "cmuscheme" "Major mode for Scheme." t)
(autoload 'run-scheme "cmuscheme" "Run an inferior Scheme process." t)
また、途中で scheme プロセスを再起動する関数を自作し、追加しました。
(defun reload-scheme ()
(interactive)
(if (get-process "scheme")
(delete-process "*scheme*"))
(if (get-buffer "*scheme*")
(kill-buffer "*scheme*"))
(run-scheme scheme-program-name))
*scheme* バッファで define されている手続きをクリアしたかったけど、方法がわからないので、
プロセス自体を再起動することにより目的を実現しています。
Github
演習問題の解答、教科書に載っているコードで写経したものはリポジトリに放りこんでおきます。