Ocamlで、部分的な入力情報かどうかを知りたいです。コンパイルしないプログラムの場合、トップレベル/コンパイラの既存の機能によって描画できますか? 説明させてください。
Ocaml では、推論された型が -annot ファイルで取得できることはよく知られています。ただし、入力エラーが原因でコンパイルできないコードがある場合があります。このパターンのトップレベルにエクスポートされたエラーが発生します
"This expression has type A, but was expected type B"
人為的な例は
# let x =
let y = 5 in
not y;;
Characters 32-33:
not y;;
^
Error: This expression has type int
but an expression was expected of type bool
このコードのプログラマーは、このメッセージの 2 番目の部分、つまり「y は bool 型であることが期待されます」をよく理解する必要があります。これは、「y ではない」部分があるためです。ただし、このエラー メッセージの最初の部分を理解するのが難しい場合があります。この「y」はどのように「int」型であると推測されるのでしょうか。したがって、型の競合が発生する前に、推論された型の部分的なセットを持つことは興味深いでしょう。上記の例では、最初の "y" ("let y = 5" から) が int 型であることをインタープリターに伝えてほしいと思います。これにより、2 番目の "y" ("not y" から) の理由がわかります。 ) は int 型であると推測されます。
説明されている機能がすでに一部の ocaml インタープリター/コンパイラーによって提供されているかどうか教えていただけますか?
一般的な言葉で言えば、私の質問は次のとおりです: ocaml トップレベルまたはそのインタープリターは、入力エラーの原因をより効率的に見つけるために、ユーザーが取得できる部分的に推測された型を生成できますか?
部分的に推論された型注釈が一意でないため、この質問は意味をなさない可能性があります。ただし、例の例は、少なくともいくつかのケースでは、一部の部分的に推測された型にその使用法があることを示す必要があります。
アイデアありがとうございます。