Scheme のインタプリタです。R5RS のフルセットを目指しています。現状ではまだまだ遠いです。
次のことが出来ます。
次のことが出来ません。
前のバージョンとは、次のことが違います。利用者側からは、MR以外あまり関係ないことばかりです。
ライセンスは ruby's でお願いします。
なお、バグや改良点などがありましたら(たくさんある)、ご連絡頂けると私が大変喜びます。また、利用例など(があれば)ご連絡頂けると狂喜します。
Ruby 1.8.0 であれば、解凍するだけです。
それより前のバージョンでは、次のものが必要です。
ファイルの中の Scheme プログラムを直接実行する方法と、対話型インタプリタがあります。
ruby rucheme.rb [opts] [files] options : --verbose : run on verbose mode -h, --help : show help message(this message) -v, --version : show version
[file] が無い場合、標準入力から読み込みます。リダイレクトで遊べます。
2種類のインタプリタを用意してあります。
ruby rcm.rb # ごく普通のインタプリタ ruby mr.rb # 業界新機軸を目指す対話型インタプリタ
個人的には mr.rb のご利用を強くオススメします。でも、しゃれがわからない人は使わないでください。
Rucheme は Ruby で書いてあるため、簡単に他のアプリケーションに組み込むことが出来ます。
rucheme.rb の中を見れば、何をすればいいかわかると思います。(手抜き)
まぁ、当該個所を抜粋してみるとこんな感じ。IO は、多分ファイル IO なんじゃないですかね。文字列も入りますけど。
require 'rucheme'
reader = Rucheme::Reader.new false, IO, [IO name]
topenv = Rucheme::Environment.interaction_environment
while reader.rest?
begin
sexp = reader.read
r = Rucheme::Evaluator.eval(sexp, topenv)
end
end
簡単です。評価したデータ自体は、Rubyのデータそのものなので、好きにできます。たとえば、(+ 1 2 3) という式で得られるデータは 6 という Fixnum です。
ちょこっとです。エラーが出たら、使えない機能だと思ってください。
QuickML で作らせて頂きました。10人制限ですが、まぁこんなのに興味を持つ人なんて殆ど居ないでしょう。
10人制限って、別に私が制限したいわけじゃなくて、QuickML.com の都合の話です。まぁ、そんなに居ないだろうからいいやー、って話です。
具体的には次のようにします。
Subject: 参加します To: rucheme-talk@quickml.com ← MLのアドレス From: hoehoe@example.com ← 自分のアドレス Cc: ko1@namikilab.tuat.ac.jp ← 参加メンバーのアドレス メイドのテーマなら任せてください。 ← 本文(こういうの希望)
テーマについて論じることができることを期待しています。
いいですか、しゃれですよ、しゃれ。いつもこんなこと考えてるんじゃないですよ。
Sasada Koichi / sasada@namikilab.tuat.ac.jp