nmoshはR7RSライブラリをR6RSに変換することでR7RSライブラリを読み取れるようにしている。同様のことをモジュールシステムの無いR5RS相当の実装、例えばMIT SchemeやSchluesselで行なってR7RSを実装できないかと思った。

つまり:

R7RSコードとライブラリの字面だけを見て(syntax-rulesを展開すること無く)、フラットなR5RSコードに変換することは可能か

当然、自前のexpanderを持てば実装するのは容易と言える。が、実装本来のsyntax-rulesを生かしたままこれを実装する方法は今のところ思いついていない。

手続きやオブジェクトのrenameは簡単 重要、というか、唯一の実装が必要な構成要素として、ライブラリ構文にある rename が挙げられる。renameさえ実装できれば、後はライブラリのコードを適当にrenameしつつ連結すれば、R7RSライブラリをR5RSプログラムに変換することができる(当然R7RSで定義される構文や手続きのR5RS実装も作っておく必要があるが。。)

手続きやその他オブジェクトのrenameは非常に簡単と言える。例えば、単にletでnamespacingし、最後にset!すれば目的を達成できる。 ( library ( A ) ( export ( rename ( a global-A ))) ( import ( rnrs )) ( define a 10 )) ( define global-A #f ) ( let () ( define a 10 ) ( set! global-A a ))