読者です 読者をやめる 読者になる 読者になる

SICP 孤読書会 - SICP を読む前の準備

SICP を読む際に準備したものを書いておきます。

SICP

洋書もありますが、日本語で書かれた計算機プログラムの構造と解釈の第二版を使います。

計算機プログラムの構造と解釈

計算機プログラムの構造と解釈

ちなみに、洋書の方はWebで無料公開されています。

Welcome to the SICP Web Site

紙と鉛筆

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

演習問題の解答、教科書に載っているコードで写経したものはリポジトリに放りこんでおきます。

snufkon/SICP · GitHub


SICP 孤読書会のメインページはこちら