Rails がメイン言語の会社で SICP 読書会を始めることになったので、参加者の敷居を下げるために Scheme 処理系の準備メモです。1
どの処理系にするか?
Scheme にはたくさんの処理系が存在していて2、最初はちょっと迷いました。
が、Web で調べたり、自社で SICP 読書会をやってる @lagenorhynque さんのおすすめもあって、Racket を使うことにしました。
選んだ理由
- mac だと homebrew で簡単にインストールできる(弊社のエンジニアは mac ユーザが大多数を占めているので)
- DrRacket という IDE もついてくるので簡単にインタラクティブな開発が体験できそう3
- SICP Collection というものが用意されていて、素の Scheme だと大変なところがカバーされているらしい(※ 要出典)
インストール
処理系のインストール
$ brew cask install racket
SICP Collection パッケージのインストール
$ raco pkg install sicp
DrRacket を立ち上げて、コードを入れて Run すると、ちゃんと動くことが確認できます。
これで安心して SICP 読書会を進められそうですね
$ drracket
DrRacket 使わないよ〜という人向け情報
ミニマムインストール
DrRacket 使わない(全部 console 上の REPL でやる or Emacs & geiger 使う)という人は、以下のように必要最低限インストールしてください。
$ brew install minimal-racket
$ raco pkg install sicp
REPL を開くときに lang: sicp を指定すれば OK
$ racket -I sicp
各種エディタと連携する
Emacs
geiser を使うと Cider や Slime のような感じで開発ができるようになります。
use-package を使っている人は以下の設定を .emacs.d に追加してください
(use-package geiser
:config
(setq geiser-active-implementations '(racket)))
その他のインストールは本家サイトをご確認ください
→ http://www.nongnu.org/geiser/geiser_2.html#Installation
※ minimal-racket だと mzlib/thread が無いといって怒られるかもしれないので、その場合は ↓ のパッケージを入れれば OK
$ raco pkg install compatibility-lib
注意
Emacs 以外はは未検証なのでちょっと調べて見つけたリンクだけ張っておきます...
どなたか編集リクエストで教えていただけるとうれしいです
Vim
Atom
VS Code
-
カッコが多い言語が好きな方は環境構築するのは苦ではないかもしれませんが... ↩
-
フムフムヌクヌクアプアアの表紙でおなじみの Gauche や GNU Guile、Chickin、MIT/GNU Scheme など、ちょっと調べるだけでもいっぱいあることがわかります。 ↩
-
今回は気軽に SICP 学習を進めるられることに重きをおいてます ↩