超推論言語妄想
http://www.kmonos.net/wlog/55.php#_1446051108
面白いなぁ…こういうのがメインストリームになるってのはちょっと予測しずらくもあるんですが。もう少しルールが明確でないと、この場合は推論してくれるんだっけ…とか思って結局メソッド名全部書いちゃいそう。この言語って未初期化変数は null 入れてくれるよね…とか思いながら一応 val = null とか書いちゃう感覚で。手慣れた人はスイスイ書けそうだけど。
こういう世界に進化するんだろうか。
// ← int main() { がなんとなく推論されている 2; // int x = 2; 3.2; // float y = 3.2; print(example(1 & 1.1 => 2.1)(int, float)); // ← return 0; } が推論されている
print は int を print するんだから当然 printf("%d\n") だよね!と推論。
example(a & b, ... => x) は a,b,... を引数として結果が x になる関数を推論して返す。
あれだ、世界中のソースを溜め込んで、そこから学習した定石によって学習させるとか。 printf と int のコラボは printf("%d\n", i) が多かった、この場合は print と int が来てる、うん、一致度70%、よし推論してあげよお、とか考えるコンパイラ。
……たぶん以下のコードは、
print;
次のように推論される。
int main() { printf("Hello world!\n"); }