tasuwo blog

YosemiteでCommon Lispの環境構築

| Comments

Motivation

以前この本を読んでLispを知った.どんなもんかなと触ってみたくて…という軽い気持ちで触れることに.結構奥が深いようで楽しみという初心者並みの感想.自分用に環境構築時のメモしておく.

以下,自分のPC環境.

  • Mac OS X Yosemite 10.10.1

1. Common Lisp

1.1 基礎知識

そもそもどんなものが必要なのか?ざっくり言うと以下.

  • Lisp処理系
    • つまりコンパイラ(インタプリタ).
  • ライブラリ管理ツール
    • 名前の通り

1.2 実際にインストール

それぞれ種類があるけど,今回は情報をよく見かけた以下を選んだ.

  • Lisp処理系
    • SBCL Compiler
  • ライブラリ管理ツール
    • Quicklisp

前提として,Homebrewが導入されている必要がある.手順は以下.

  1. Homebrewを用いてSBCLをダウンロード
    brew install sbcl
  2. QuickLispを公式サイトからダウンロード. quicklisp.lispをDLすれば良い.
  3. SBCLからquicklisp.lispを実行する. Terminalで sbcl --load quicklisp.lisp を入力. SBCLが起動する.
  4. (quicklisp-quickstart:install)とタイプし, Returnを押下. Quicklispのインストールルーチンが開始される.
  5. インストール終了後, (ql:add-to-init-file)とタイプする. これにより, SBCL起動時, 自動的にQuicklispがロードされる.

これでSBCLとQuicklispのインストールは終了.lispファイルを実行したい場合は sbcl --load <file> とすれば良い.ライブラリを追加したい場合は(ql:quickload "libraryname") とすれば良い.

3. Sublime Text3 + Common Lisp

ST3をよく使うので,連携させて使ってみたいと思った.
必要なものは1つ.

  • SublimeREPL
    • REPL = Read-eval-print loop
    • 評価/表示の繰り返し = 対話型評価環境のこと(インタプリタとは違うらしい…)
    • 利用可能な言語は多数ある
      • Emacs lisp
      • Ruby
      • Python
      • Scheme処理系
      • Haskell
      • OCaml

3.1 インストール

パッケージコントロールからインストールしておしまい.Sublime TextにおいてPreferences > Package ControlでInstall Packageを選択し, インストールする.これにより, SBCLのREPLにsublimeを介してアクセスできるようになる. アクセス方法は, Tools > SublimeREPL > Common Lisp > SBCL
また,複数のCommon Lisp処理系に対応させるために最新版にしたほうがいいらしい. Preferences > Package Controlから,Add Repositoryを選択し, URLhttps://github.com/wuub/SublimeREPL を入力.これにより,最新版をインストール可能.

3.2 キーバインディングの設定

いちいちメニューから選択してREPLを起動するのは面倒なので, キーバインディングを設定する. Sublime Text > Preferences > Key Bindings - Userを開き,以下を入力 & 保存.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
    {
        "keys": ["super+ctrl+h"],
        "command": "repl_open",
        "args": {
            "type": "subprocess",
            "encoding": "utf8",
            "cmd": ["sbcl", "-i"],
            "cwd": "$file_path",
            "external_id": "lisp",
            "syntax": "Packages/Lisp/Lisp.tmLanguage"
        }
    }
]

これで, ⌘ Command + ^ Control + HからSBCL REPLを開くことができる. ちなみに, ファイルパスはSublimeでどこのファイルを開いたか? に依存する. /path/to/main.lispをSublimeで開き, ⌘ Command + ^ Control + H を押下しSBCLを起動したなら, パスは/path/to/に通っているので, そこに存在するlispファイルをloadできる.

3.3 ビルドシステムの設定

Sublime上で記述したCLファイルがあった時, コマンド一つでビルドできたら便利だ.ということで, ビルドシステムの設定を行う. Tools > Build System > New Build System...とし, 次のような記述を行う.

1
2
3
4
{
    "shell_cmd": "/usr/local/bin/sbcl --disable-debugger --load $file",
    "working_dir": "$file_path"
}

ファイル名をSBCL.sublime-buildとして保存する. これにより, ビルドシステムからSBCLを選ぶことが可能になる.
CLファイルを記述中に⌘ Command + Bを押下すれば, 即座にコンパイル & 実行できるようになった.

4. 次回

今回は手元にまとめていたものを公開する形だった.なので新しいことをしたわけじゃない.学業の方がひと段落つきそうなので,そしたら残っているやりたいことや新しいことに挑戦していきたいなぁ.
Lispについては勉強の仕方と,簡単なゲームを作った記録を公開していく予定.まだまだ勉強したてなので精進したい.

参考文献

Sublime Text 2でCommon Lispを書くための環境設定
SublimeREPL
Setting up a Common Lisp environment on OS X with Sublime Text 3
QuickLisp - Common Lisp Wiki
ASDF
モダンCommon Lisp: Quicklispによるライブラリ環境
SBCL(Steel Bank Common Lisp) - 紫藤のWiki
SBCL - Steel Bank Common Lisp - LispUser.net
Steel Bank Common Lisp - Wikipedia

Comments