これは何か?
R6RSという Scheme の新しい言語仕様に準拠することを目指している高速な Scheme インタプリタです。
何が出来るの?
Perl や Ruby で行っているような実用的なプログラミングができます。(現時点ではもちろん機能は限られますが)
例えばサンプルとして Monar で書かれた Wiki が動いています。
なぜ Scheme なの?
Scheme という言語が柔軟で素晴らしい言語だからです。
Scheme について知りたい方は、計算機プログラムの構造と解釈やプログラミングGaucheなどを読まれると良いでしょう。
ダウンロードとインストール
Google Code からソースコードをダウンロードして下さい。
ソースコードのビルドにはGauche が必要です。
./configure make make check make install
ビルドできない、できたなどの情報もぜひこちらか、日記へのコメントにお寄せ下さい。
機能概要
- Scheme としてのコア
- UTF-8 の入出力
- Quasiquote
- 正規表現
- 伝統的なマクロ
- 30bit の Fixnum
- シンプルなポート
- シンプルなCGI
- format 手続き
ドキュメント
- リファレンスマニュアル
- ロードマップ
制限と注意
このリリースは一番最初のリリースであり、Monar にはまだ多くのバグや不具合がある可能性が高いです。
もしバグを見つけたらこちらか、日記へのコメント、などでご指摘頂けると助かります。
また現時点で対話的な REPL は実装されていません。
募集
Monar では開発に参加して下さる方を募集しています。
ソースを読んで参加してみたいと思った方はご連絡下さい。
謝辞
Monar の開発にあたって多くの方の助けていただきました。
この場をお借りしてお礼を申し上げます。
Gauche 開発者の川合史朗さんには Scheme やインタプリタ全般に関して専門的で貴重なアドバイスをたくさん頂きました。
また Monar は read.cpp やコンパイラの最適化部分など一部の機能を Gauche のコードを利用しています。Gauche という良質のソースコードを公開してくださっていることに感謝します。
Ruby YARV 開発者の笹田さんには、VM の高速化手法や論文の紹介などたくさんのアドバイスを頂きました。
mumurik さんには FFI や場当たり的なパフォーマンスチューニングから始まるエントリーなど多くのご助言を頂きました。
Gaku さんにはパフォーマンスチューニングについて良き相談相手となっていただきました。私が客観的に見られない部分も明確にしてもらえるなど大変助かりました。
同僚の光成さん、奥さん(id:kazuhooku)には、Scheme オブジェクトをどのように C++ で表現するかについて多くのご助言とレビューを頂きました。
id:sumii さんには A正規形について詳しく教えて頂きました。(結局つかいませんでしたすみません。)
また上記以外にもたくさんの方にコメント、IRC、Lingr、飲み会などでアドバイスを頂きました。
本当にありがとうございます。
ライブラリ
Monar は以下のライブラリやツールを使わせていただいています。