C++0xのaxiom
今まで見逃していたけれども, こんなものが追加されるのか!
a + b == b + a; (a + b) + c == a + (b + c);
みたいな論理的な性質を型に与えることができるという仕様。
Haskellのrewrite rulesを連想したが論文を見つけた。
Axiom-Based Transformations: Optimisation and Testing
仕様は詳しく見ていないけれど, これは夢が広がるなぁ。
一つ残念なのが, 関数の性質を指定することができないであろうということ。
それができたら, 融合変換みたいな面白いこともできただろうに。
言語仕様が巨大すぎるのでいざコンパイラ作ろうと思っても大変だろうな。
C++0x - (無駄仕様) - (Cの負の遺産)
のような言語がほしくなってきた。