Shiro(2009/09/26 19:27:16 PDT): モジュールのインポート時にprefixをつけたい、 という要望はずいぶん前からあって、r6rsコンパチモードでも そういう機能は必要になるんで、いよいよ実装することにする。
importとuseを拡張。
<module-spec> : <module-name> | (<module-name> . <modifier-kv-list>) <module-name> : <symbol>
<modifier-kv-list>はキーワードと値の交代リストでimport modifierを 指定する。次のmodifierがサポートされる。
インポートしたモジュールから<identifier>...のみが見えるようにする。
インポートしたモジュールのうち、<identifier>...以外を見えるようにする。
インポートしたモジュール中の<identifier-orig>の束縛を、<identifier-new>の 束縛として見えるようにする。もともとの<identifier-orig>の束縛は見えなくなる。
インポートした側では、<identifier>をプリペンドした名前が見える。
(use srfi-1 :prefix srfi-1:) srfi-1:filter => srfi-1 の filterを参照
prefixについては識別子を探す側、つまりScm_FindBindingで対応する。 prefixつきでimportされているモジュールを探しに行くときは、 探すべき識別子からprefixを取り除いてやるだけだ。
only, except, renameについては、import時にダミーのモジュールを作る。