[Gauche-devel-jp] Re: 埋め込み言語の設計

Back to archive index

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





Gauche-devel-jp メーリングリストの案内
Back to archive index