K.Sasada's Home Page

Rucheme / Scheme(subset) interpreter on Ruby


What's Rucheme?

Scheme のインタプリタです。R5RS のフルセットを目指しています。現状ではまだまだ遠いです。

次のことが出来ます。

次のことが出来ません。

前のバージョンとは、次のことが違います。利用者側からは、MR以外あまり関係ないことばかりです。

How to get Rucheme?

ライセンスは ruby's でお願いします。

なお、バグや改良点などがありましたら(たくさんある)、ご連絡頂けると私が大変喜びます。また、利用例など(があれば)ご連絡頂けると狂喜します。

How to install Rucheme?

Ruby 1.8.0 であれば、解凍するだけです。

それより前のバージョンでは、次のものが必要です。

How to use Rucheme?

ファイルの中の Scheme プログラムを直接実行する方法と、対話型インタプリタがあります。

with File

ruby rucheme.rb [opts] [files]

options :
 --verbose    : run on verbose mode
-h, --help    : show help message(this message)
-v, --version : show version

[file] が無い場合、標準入力から読み込みます。リダイレクトで遊べます。

with Interpreter

2種類のインタプリタを用意してあります。

ruby rcm.rb  # ごく普通のインタプリタ
ruby mr.rb   # 業界新機軸を目指す対話型インタプリタ

個人的には mr.rb のご利用を強くオススメします。でも、しゃれがわからない人は使わないでください。

How to use Rucheme in other Ruby application?

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 です。

How much implemented in Rucheme?

ちょこっとです。エラーが出たら、使えない機能だと思ってください。

Mailing list

QuickML で作らせて頂きました。10人制限ですが、まぁこんなのに興味を持つ人なんて殆ど居ないでしょう。

10人制限って、別に私が制限したいわけじゃなくて、QuickML.com の都合の話です。まぁ、そんなに居ないだろうからいいやー、って話です。

具体的には次のようにします。

Subject: 参加します
To: rucheme-talk@quickml.com         ← MLのアドレス
From: hoehoe@example.com             ← 自分のアドレス
Cc: ko1@namikilab.tuat.ac.jp         ← 参加メンバーのアドレス

メイドのテーマなら任せてください。   ← 本文(こういうの希望)

テーマについて論じることができることを期待しています。

ToDo

Bibliography

another...

いいですか、しゃれですよ、しゃれ。いつもこんなこと考えてるんじゃないですよ。

Sasada Koichi / sasada@namikilab.tuat.ac.jp
$Date: 2003/02/26 13:07:29 $