[Gauche-devel-jp] syntax-rulesのリテラルの解釈について

Zurück zum Archiv-Index

木谷 洋 ryute****@mac*****
2005年 5月 15日 (日) 09:59:57 JST


木谷と申します。しばらくROMしてましたが参加してみようと思 
います。

いきなりGaucheと直接関係ない話題で恐縮なのですが、 
R5RSの解釈について質問させて下さい。

4.3 マクロのsyntax-rulesの記述によると、
  A subform in the input matches a literal identifier if and only if  
it is an identifier and either both its occurrence in the macro  
expression and its occurrence in the macro definition have the same  
lexical binding, or the two identifiers are equal and both have no  
lexical binding.

試訳
入力の部分形式がリテラル識別子に一致するのは、それが識別子であ 
り、かつマクロ式中でもマクロ定義中でも同じレキシカルな束縛を持っ 
て出現する場合、または二つの識別子が等しくかつ共にレキシカルな束 
縛を持たない場合である。

でよいと思うのですが、この一致条件の説明はさっぱりワケが分かりま 
せん。例えば
(let-syntax ((m (syntax-rules (XX)
    ((m XX) 'x)
    ((m v) v))))
;(m 1) -> 1
;(m XX) -> x
)
というように挙動そのものは理解できるんですが、ここに書かれた二つ 
の一致条件はそれぞれどういう状況を意味するんでしょうか。

--
木谷 洋



Gauche-devel-jp メーリングリストの案内
Zurück zum Archiv-Index