一般化を考えてみる

例外なしで考えてみる


1.
A ||->f B
= (bool)A ? f(A) : B
とか?


2.
A ||-> B
= (bool)A ? A() : B
でA()はオーバーロードとか?


3.
A ||-> B
= (bool)A ? (typeof(B))A : B
でキャストをオーバーロードとか?


4.
A ||-> B
= (bool)A ? get(A) : B
でgetをオーバーロードとか?


5.
A ||->(a,b,c) B
= (bool)A ? A(a,b,c) : B
で任意の関数に使えるとか?


ひどい構文
built-inだったら2.がなんとか許せるかなー
関数ポインタにも使えるので


tupleとか多値だと
2値だけ特別扱いになってなんかbuilt-inらしくない


1.の形式ならそうでもないか
でもこの構文パースが紛らわしいんだよな


何にせよ
「値とショートカットの判断基準が異なる||みたいな演算子
ってものがあれば
それのオーバーロードでなんとでもなりそうなそうでもなさそうな