ここではthis質問を見ましたが、私が特に気にしていたことには答えません。 GoやC++ 11などの言語でDamas-Milnerのような推論アルゴリズムを使用していない場合、正確にはどうしますか?C++ 11やGoのような言語で型推論がどのように実装されていますか?
5 + 3.4
どのようにコンパイラがどのようなタイプを解読します:私はそれが何のようなものを持っていた場合ので、右側のタイプを取るのと同じくらい簡単だと思いませんか?
if left is integer and right is float:
return float;
if left is float and right is integer:
return float;
etc... for every possible pattern
ように単純ではありません任意のアルゴリズムがありますそして、あなたは簡単な言葉で物事を説明することができればそれは素晴らしいことです。私は、コンパイラの構築や理論的な話題について詳しくは学んでいませんし、実際には関数型言語や複雑な数学的表記法を話さないのです。
これはもっと似ています:* "左は整数、右は浮動小数点、左に浮動小数点を変換し、2つの浮動小数点数を加算する" *。式の各2項演算子の変換が(必要に応じて)実行され、結果は式の中で最も高い順位の型になります。 – user3386109