はじめに
プログラミングを始めるには、どの言語でも開発環境の構築が必要である。この記事ではCommon Lispの開発環境をEmacsというテキストエディタとSteel Bank Common Lisp(以下SBCLと呼ぶ)という言語処理系を用いて説明する。
まず、SBCLをインストールし、動作確認を行う。次に、サードパーティのライブラリを利用するためのQuicklispというソフトウェアを導入する。そしてEmacsをインストールし、Common Lispプログラムの編集とデバッグを容易にするため、Slyを中心にパッケージを導入する。
導入手順
SBCLのインストール
Common Lispはよく知られたCと同様に、標準化された言語仕様を持つプログラミング言語である。CにはGCCやClangをはじめとする言語処理系が多数あるように、Common Lispにも様々な言語処理系が存在する。この記事では、フリーかつよく使われている言語処理系のSBCLを導入する。SBCLは入力したプログラムをその場で実行できるREPLを持っているが、入力したテキストを編集する行編集機能や履歴機能を持たない。rlwrapを使うと、SBCLに行編集機能や履歴機能を付加でき、その不便さを軽減できる。
OSのパッケージマネージャを利用する方法
読者がLinuxを利用していてなおかつ管理者権限を持っていれば、ディストリビューションのパッケージマネージャを使ってインストールができる。
$ sudo apt-get update
$ sudo apt-get -y sbcl rlwrap
ArchLinuxの場合
Windowsの場合はwingetが利用できる
手作業で導入する方法
SBCLのサイトからバイナリをダウンロードする。
Windowsの場合は、ダウンロードしたバイナリがインストーラになっているのでそれを実行する。
Linuxでは次のようにすると、ホームディレクトリに導入できる。
$ tar xf sbcl-2.4.1-x86-64-linux-binary.tar.bz2
$ env INSTALL_ROOT=${HOME}/.local sh install.sh
rlwrapも次の手順に従ってインストールする。
コンパイルに必要なコンパイラとライブラリをインストールする。
$ sudo apt-get update
$ sudo apt-get install build-essential curl libreadline-dev
続いてrlwrapのソースコードをダウンロードしてコンパイルする。
$ curl -LO https://github.com/hanslub42/rlwrap/releases/download/0.46.1/rlwrap-0.46.1.tar.gz
$ tar xf rlwrap-0.46.1.tar.gz
$ cd ../rlwrap-0.46.1
$ ./configure --prefix=${HOME}/.local
$ make
$ make check
$ make install
~/.profileまたは~/.bash_profileに次の内容を追記し、ログインしなおす。
export PATH=${HOME}/.local/bin:${PATH}
動作確認をする
ここでは--noinformオプションを使い、SBCLの著作権表示を抑制している。
(quit)と入力すると、SBCLを終了できる。
$ rlwrap sbcl --noinform
* (format t "Hello, world!~%")
Hello, world!
NIL* (quit)
Quicklispのインストール
Common Lispそれ自体には、プログラムをパッケージングして流通させる仕組みがない。パッケージングを行うにはAnother System Definition Facilityと呼ばれるライブラリが使われており、CにおけるMakeの役割を果たしている。また、ソフトウェアを簡単にダウンロードできるように、Quicklispと呼ばれるソフトウェアも広く使われている。
Quicklispは、シェルではなくCommon Lispの言語処理系からその機能を利用するのが特徴となっている。
まずQUicklispのインストーラをダウンロードし、GnuPGを使って改ざんの有無を確認する。
$ curl -O https://beta.quicklisp.org/quicklisp.lisp
続いてSBCLにインストーラをロードし、Quicklisp本体をインストールする。
$ rlwrap sbcl --load quicklisp.lisp
* (quicklisp-quickstart:install)
* (ql:add-to-init-file)
* (quit)
Qucklispの動作確認をする。ここでは、よくある処理をまとめたAlexandriaというライブラリをインストールしている。
$ rlwrap sbcl
* (ql:quickload :alexandria)
* (alexandria:ensure-list 'hello)
(HELLO)
* (alexandria:ensure-list '(hello))
(HELLO)
* (quit)
Emacsのインストール
OSのパッケージマネージャを利用する方法
$ sudo apt-get update
$ sudo apt-get -y emacs
ArchLinuxの場合
Windowsの場合
Slyのインストール
Common Lispはほかのプログラミング言語とは異なり、対話的環境を中心に開発を進めるスタイルをとる。SlyはEmacsとCommon Lisp処理系を連携させることで、プログラムの実行やデバッグを容易にすることを目的としたパッケージである。Slyには例えば次のような機能がある。
- REPLにプログラムのすべてまたは一部を送信して計算結果を得る
- 関数や変数の名前の補完
- 関数呼び出しの履歴を得る
~/.emacs.d/init.elに次の内容を貼り付ける。
そしてEmacsを起動する。
$ emacs
Altキーとxキーを押下しslyと入力する(M-x sly)。
するとSLyが起動し、REPLが現れる。