Shiro Kawai
shiro****@lava*****
2005年 6月 18日 (土) 08:40:22 JST
From: 木谷 洋 <ryute****@mac*****> Subject: [Gauche-devel-jp] 埋め込み言語の設計 Date: Fri, 17 Jun 2005 16:55:49 +0900 > 1. ブリッジのメソッド呼び出し部のC側インターフェースは ちょっと質問の要点がよくわからなかったのですが、Scheme式 > [[obj msg] msg1: arg1 msg2: arg2] を、 > (objc-send (objc-send obj "msg" '()) > "msg1:msg2:" (list arg1 arg2)) に展開したいってことでしょうか? マクロ式とは最初の要素が識別子でないといけないんで、これだと 一番外側の式はマクロ式とは見なされないような気がするんですが、 何か勘違いしているでしょうか。 それと、R5RS macroだけでは入力式にあるシンボルを出力式に 文字列として埋め込むことはできないはずですが、どうしてるのでしょう。 なお、一般的に相互再帰マクロをトップレベルのdefine-syntaxで 書きたい場合、補助マクロもトップレベルで定義してしまうか、R5RSの 例にあるように特殊な文字列を入れて展開先をコントロールするか、に なると思います。どちらもあまり綺麗ではないですが。 (define-syntax foo (syntax-rules () ((foo "arg" ...) argの展開) ((foo "form" ...) formの展開) ((foo FORM) ベースケース))) > 2. R6RSで単なる括弧扱いされるらしい、という[]は > Gauche的にはどうなるんでしょうか。ObjC部だけ[]で記述 > すると埋め込みらしくて見栄えがするんで、今は気にせず使ってるんで > すが。 R6RSと非互換にはしたくないので、[]は現行通り()と解釈する、 という路線をキープするしかないかなあ、と諦めています。 --shiro