fixedpoint.jp - Final R6RS and more




Final R6RS and more

ついに Scheme の最新の仕様 R6RS の final version が出ました。

いろいろな議論の末に採択されたその内容が与える影響のうち、2つの点で非常に期待をしています:

syntax-case を取り込んだこと
R5RS にある syntax-rules などによる hygenic なマクロ定義に加えて、そうでないものも syntax-case で可能になります。
R6RS の著者の1人 Kent Dybvig 教授が提案したこの変換子は、これまでも Chez Scheme という処理系に実装されていたものです。
(また、例えば slib を通じて Gauche でも利用できるはずです。)
「プログラミング言語SCHEME」で初めて知ったとき、これでさらに Scheme のマクロを強力にできるのだという衝撃を覚えたことを忘れません。
実際、少なくとも自分が書くコードで使う(Commmon Lisp スタイルの define-macro で定義されているような)参照透過でないマクロの大部分は、syntax-case でより扱いやすく定義し直せるだろう、という見通しがあります。
Scheme コードの移植性を高めること
R6RS がはっきりと R5RS と違うところは ... 4部構成になったことです :-)
この体裁の変更の理由の1つは、コアの言語仕様はさておき、第2部の標準ライブラリと第3部の補遺を標準に含めることだったはずです。
これらを含めることで、世にある Scheme 実装のいずれでも動作するようなプログラムを作成することが可能になります。
(より正確には、これまでは SRFI や slib といった現実的なアプローチで実際的に可能であったことが、仕様によって保証されるようになったということが大きいと思います。)

ちなみに R7RS も既に始まっています...?


© 2006,2007 Takeshi Abe