【2018年3月】SICPを始めるためのScheme処理系準備メモ

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

Untitled_-_DrRacket_and_1__tmux___Users_fumitaka_tokumitsu_works_classi_video__tmux_.png


DrRacket使わないよ〜という人向け情報

ミニマムインストール

DrRacket使わない(全部console上のREPLでやる or Emacs & geiger使う)という人は、以下のように必要最低限インストールしてください。

$ brew install minimal-racket
$ raco pkg install sicp

REPLを開くときに lang: sicpを指定すればOK

$ racket -I sicp

1__racket___Users_fumitaka_tokumitsu__racket_.png

各種エディタと連携する

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

こんな感じ
Pasted_Image_2018_03_20_19_49.png

マクロ展開もできます
image.png


注意
Emacs以外はは未検証なのでちょっと調べて見つけたリンクだけ張っておきます...
どなたか編集リクエストで教えていただけるとうれしいです

Vim

Atom

VS Code


  1. カッコが多い言語が好きな方は環境構築するのは苦ではないかもしれませんが... 

  2. フムフムヌクヌクアプアアの表紙でおなじみの Gauche や GNU Guile、Chickin、MIT/GNU Schemeなど、ちょっと調べるだけでもいっぱいあることがわかります。 

  3. 今回は気軽にSICP学習を進めるられることに重きをおいてます 

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.