Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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学習を進めるられることに重きをおいてます 

classi
学校の先生・生徒・保護者向けのB2B2Cの学習支援Webサービス「Classi(クラッシー)」 を開発・運営している会社です。
https://classi.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした