軽量メタプログラミングの一部を Nemerle から Boo に移行しようと考えており、カスタム オペレーターを定義する方法を見つけようとしています。たとえば、Nemerle では次のことができます。
macro @<-(func, v) {
<[ $func($v) ]>
}
次に、これら2つは同等です:
foo <- 5;
foo(5);
Boo でこれを行う方法が見つかりません。アイデアはありますか?
軽量メタプログラミングの一部を Nemerle から Boo に移行しようと考えており、カスタム オペレーターを定義する方法を見つけようとしています。たとえば、Nemerle では次のことができます。
macro @<-(func, v) {
<[ $func($v) ]>
}
次に、これら2つは同等です:
foo <- 5;
foo(5);
Boo でこれを行う方法が見つかりません。アイデアはありますか?
Boo は適切な静的演算子関数 ( op_addition
) を定義することで演算子のオーバーロードをサポートし、構文マクロもサポートしていますが、現時点ではカスタム演算子の作成はサポートしていません。
これがまさにあなたが必要としているものかどうかはわかりませんが、Boo で構文マクロを作成できます。CodeHaus サイトhttp://boo.codehaus.org/Syntactic+Macrosにいくつかの情報がありますが、最近のリリースの 1 つで構文が変更されています。新しい構文に関するチュートリアルは知りませんが、Boo 0.8.2 のソース リリースにはいくつかの例があります (言語構造の一部はマクロとして実装されています)。完全なソースをダウンロードしたくない場合は、SVN リポジトリのビューを利用できます ( https://svn.codehaus.org/boo/boo/trunk/src/Boo.Lang.Extensions/Macros/ )。assert マクロは、開始するのに適した場所です。
HTH
ストー