[Gauche-devel-jp] Re: CommonLisp の defmacro の &body 相当について

Back to archive index

Makoto Satoh makot****@yahoo*****
2005年 4月 22日 (金) 12:06:47 JST


佐藤です。

> ただ、このような呼び出し形式のマクロはCL文化ではよく見るのですが
> (CL標準のwith-open-fileなんかもこの形式ですね)、Schemeではあまり
> 見ませんね。どちらかというと with-* 自体を関数にして、明示的に
> クロージャを渡す方が好まれるようです。特に、束縛を導入する構文を
> 増やしたがらないような感じがあります (let類似のものを除く)。

なるほど。wiliki-with-dbを見て、「あれー、マクロじゃないのね」と
思っていました。
 
> 私自身、with-* というマクロをつい書いてしまうことがありますが、
> 標準との整合性 (with-input-from-file等) を考えると、似た名前で
> マクロと関数が混在するのは好ましくないと思います。

なるほど。WiLiKiにあるCGI:スケジュール予定表ではwith-dbがマクロ
ですが、まああれは1つのCGIなので同等に論ぜないですが、APIとして
公開するということなので、この「好ましくないと思う」を考慮して
おきたいと思います。

> Gaucheらしい呼び出し形式としては、こんな感じで、procに作られた
> イメージオブジェクトを渡し、オプショナルなものをキーワードで渡す
> ようにしたらどうでしょう。call-with-input-file等のAPIと並べてみて
> 下さい。
> 
>  (call-with-gd-image width height proc &keyword true-color)
> 
> なお、&keywordというのはここではAPIを示すのに使っているだけで、
> 実装では let-keywords* などを使って自分で取り出す必要があります。

この方針でやってみます。ありがとうございました。



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