Magica Extension of C++ (妄想)

こんな言語があったらいいなーっていう妄想です

C++並の速度が出る

1からコンパイラを書いてこれを実現するのはかなり大変でしょうが、C++に変換するトランスレータを作成すれば不可能ではありません。

Union Findが標準ライブラリに含まれる

Union Findは簡単に書けますが、これぐらいライブラリにあってもいいと思います。

graphが標準ライブラリに含まれる

Dijkstra、Bellman-Ford、Dinic、強連結成分分解などをメソッド一発で実行できると楽です。

graph<pair<cap: int, flow: int> > g;
/* グラフに辺を追加 */

//最大流の計算
print(g.dinic(0, 1));

任意の個数組でpairができる / pairの変数名を自在に設定できる

pair みたいな表現ができると幸せです。

a < b < c が a < b && b < c と等価

Pythonだとそうらしいですね。この書き方が使えるとかなりうれしいです

多倍長整数を自然に扱える

そのままです。C++は標準ライブラリに多倍長整数が入っていないのでいちいち書かないといけません。乗算がO(N log N)でできたりするともっとうれしいです。

幾何ライブラリが標準ライブラリに含まれる

凸包、もっというとボロノイ図あたりまで標準で含まれると最高です。

簡潔な記法が充実している

ivec(vector), dvec(vector), lint/i64(long long),などはよく使うので最初から略されていると楽です。


言語作るのは大変なので、C++で妥協するならば

ライブラリは自分で作ればいいです。
簡潔な記法はライブラリにtypedefをたくさん入れておけばいいです。
a < b < cはマクロを使って

#define COMP(A,B,C) ((A)<(B) && (B)<(C))

とでもすればいいかもしれません。
任意の個数組でpairができるというのは、pairを拡張してtriple, quad, などを自前で組めばいいです。変数名設定はあきらめましょう