Syntax highlighter

(はじめよう Scheme 0)

はじめに


Schemeの入門記事や書籍は山のようにあれど、行きつく先はSchemeでScheme処理系を作るというものが多いように思われる*1。ここではもう少し実用的な用途に使えるということを示したいと思う。前半はSchemeとはどういうものかということを示し、後半では簡単なHTTPサーバ及びWebアプリケーションの構築を行う。制限として処理系依存の機能は使わずR7RS*2+SRFI*3の範囲で書けるものとする。

処理系のインストール


R7RSの処理系はいくつかあるが、使用可能なSRFIが豊富、インストールが容易、ソケットに関するSRFIが標準で付属しているという3点を考慮にいれて、ここではGaucheとSagittarius*4をメインとして使うこととする。

Windows

どちらの処理系もWindows用インストーラを用意しているのでそれを利用する。
上記のリンク先にインストーラのリンクがある。Sagittariusは現在月1で更新されているので、使用する際は可能な限り最新を使用されたい。

UNIXライク環境(含むCygwin)

どちらの処理系もいくつかのUNIXライク環境が備えているパッケージ管理システムに入っているが最新を使うのであればソースからビルドした方が確実である。上記のリンク先にはソースもあるのでそれをダウンロードしてビルド及びインストールする。Gaucheはコンパイラさえあればconfiguremakeだけでインストール可能だが、Sagittariusはビルドシステムや依存ライブラリがあらかじめインストールされている必要があるので、README.md及びWikiのBuild tipsを参照されたい。

エディタ


どちらの処理系も標準でREPLを持っているが、それだけでは開発を行う上で貧弱なのでより快適なエディタの容易を薦める。筆者はEmacsを使っているので、ここではEmacsの簡単な設定を説明する。Emacsを薦める理由はREPLとの連携が簡単にできるからであるが、毎回コマンドプロンプトからスクリプトを走らせてもよい。

Emacsは$HOME/.emacs.d/init.elにユーザ定義の設定を書くことができる。$HOMEは環境変数HOMEのことである。UNIXライクな環境であればこの変数はあらかじめ設定されているが、Windowsでは別途指定する必要がある。指定がない場合はUSERPROFILE環境変数が使われるが、この変数が指す場所は使い勝手が悪いのでHOMEを設定することを薦める。

環境変数の設定が終わったら$HOME/.emacs.d/init.elに以下を定義する。
(setq scheme-program-name "sash -i")
(autoload 'scheme-mode "cmuscheme" "Major mode for Scheme." t)
(autoload 'run-scheme "cmuscheme" "Run an inferior Scheme process." t)
これでCtrl-c eで現在編集中のS式、Ctrl-x eで一つ手前のS式を評価することができる。なお、上記の設定はSagittarius用なのでGaucheを使う際はsash -igosh -iにする必要がある。また、Windowsではインストール先のフォルダにパスが通っている必要がある。

以上で環境の構築ができたので、次回からは実際にプログラムを書いていく。

*1: 代表例SICP(Scheme入門ではないが)
*2: 2014年現在の最新規格
*3: Scheme Requests for Implementation。ライブラリ集と思えばよい。
*4: 拙作。この記事自体宣伝も兼ねている。

No comments:

Post a Comment