Avatar
omochimetaru 7/12/2017 2:55 AM
ジェネリクスも本質的には 左辺値の推論と同じなんだと思います
2:57 AM
let x = exp() の式を左から舐めていって x をpolytype で仮埋めしていて、それがexpとunificationされて確定することと
2:57 AM
exp( x: Box<Int> ) に makeEmptyBox() -> Box<T> をわたして exp ( makeEmptyBox() ) という形にときに
2:58 AM
makeEmptyBox() の型変数が Box < polytype > になっていて
2:58 AM
型パラメータ T が埋まっていない状態っていうのは
2:58 AM
推論機にとって、左辺値が不定な状態と同じ枠組み
2:58 AM
で扱える
2:59 AM
似たような話で C++14 が
2:59 AM
逆方向に話が展開しているのが面白くって
3:00 AM
いまは Swift において、 ジェネリック型は型推論の枠組みに収まるって言ったんですけど
3:00 AM
C++14 で、ラムダの引数の型を auto 型、つまり、推論させろっていう設定でラムダ式が書けるんですが (edited)
3:00 AM
ジェネリックラムダ(generic lambdas)は、C++11のラムダ式を拡張して、パラメータにテンプレートを使用できるようにした機能である。