読者です 読者をやめる 読者になる 読者になる

ユーザー定義演算子がほしい

C++

C++で他の言語の優れた機能を実現しようと思ったときに
その言語で使われてる演算子を使いたい場合があります。
そういったときに、既存の演算子を代用するのではなく、
ユーザー定義の意味を持たせていい演算子がほしくなります。


たとえば、関数型言語の関数合成を行う場合、演算子を使用しない場合には以下のように書かなければならず

int result = compose(plus, minus)(1);

既存の演算子でがんばってもこのあたりが限界です。
(operator*使ってるひともいるけど)

int result = (plus ^compose^ minus)(1);

ユーザー定義の演算子が許可され、operator・をオーバーロードできれば以下のように書けるでしょう。

int result = (plus ・ minus)(1);


他にも、範囲を生成するためにoperator..があったらうれしいですし
(RubyとかHaskellとかいろんな言語にある機能)

range r = {1..5}; // {1, 2, 3, 4, 5}


リスト内包表記を実装するためのoperator<-とかもほしいです。

list ls = make[x * x | x <- {1..5}]; // {1, 4, 9, 16, 25}

あとは、よくわかってないですけどHaskellのArrowで使用されてる
>>>とか+++とか&&&みたいな演算子があるとうれしい人がいるかも。


ユーザー定義演算子があれば夢がひろがりんぐですよ。