月刊R7RS - 第五次投票の結果が出る

(全然月刊じゃない!)

第五次投票の結果が出ている。これは、現在Formal Comment受付中のDraft6を更新するためのもので、けっこう色々なポイントが変更される。

c[ad]+rの移動

非常に印象的な変更は、caadrのようなcarやcdrの合成をbaseから外し、オプショナルにするという決定。
今までのRnRSでは、これらは基本語彙の一部だったが、baseを必要最小限にする課程でこれらは脱落した。実際、多くのscheme実装はこれらの一部をライブラリ関数として実装していて、coreに入れていないことが多い。

手続きや構文のリネーム

  • lazy, eager

lazyやeagerは微妙な名称という指摘があったので、それぞれdelay-forceとmake-promiseに改名された。

  • exact, inexact

これらはR6RS名に戻った。R5RS名(exact→inexact等)は互換ライブラリに追加される。

除算手続きの整理と削除

centered除算のような、roundingを明示的に指定した除算はsmallから削除された。
char nomalizationライブラリは削除された(= 明示的なUnicode正規化はsmall言語から削除された)。もっとも、ci(Case insensitive)な文字列比較はまだ残っているので、多分普通の処理系はnormalizeしたうえでこれらの比較を実装する。はず。

ライブラリの追加

r6rsとr5rsの互換語彙のためのライブラリが追加された。ieee互換は却下された。
r6rs互換語彙は、従来の(rnrs base)のみを含み、さらにidentifierマクロは含まないなどいくつかの語彙は削除されている。また、どちらも完全互換にする必要はない。