業界で ML を使用している人々の逸話を読んで、型推論の制限に遭遇することがかなり頻繁であり、プログラムで明示的な型注釈を使用する必要があると述べています。ML の型推論で問題が発生する場所の明確な例を挙げて、その制限が決定不能であることに関連しているかどうかを説明できる人はいますか?
質問する
246 次
2 に答える
1
今のところ例を挙げることはできません (Ocaml でコーディングしなかったのは何ヶ月も前のことです) が、実際に起こるのは型を間違えたとき (つまり、間違った型の引数を渡したとき)、特に high を使用したときです。 -order 関数の場合、タイプ エラー メッセージは、実際のミスとはかけ離れた場所で発生する可能性があります。
それを軽減するために、私はほとんどの内部トップレベル関数を明示的に入力する習慣を身につけました。
let f (x: int) : string =
于 2012-10-26T04:59:26.710 に答える
1
おそらくこの質問/回答の複製です。簡単な答え: Hindley/Milner 型推論 (ML で使用される) は、ランク 1 ポリモーフィズムに制限されます。つまり、ポリモーフィック型は、型システムの 2 番目のクラスの市民であり、たとえば、関数の引数自体をポリモーフィックにすることはできません。高ランクのポリモーフィズム (システム F 別名ポリモーフィック ラムダ計算) の型推論は決定不能であることが知られています。
于 2012-10-26T12:00:54.723 に答える