そこで、標準 ML でいくつかのコードを作成し、それを smlnj でコンパイルしようとしました。次のエラーが発生しました。
Error: operator and operand don't agree [tycon mismatch]
operator domain: unit -> Absyn.fundec
operand: unit
-> (pos * pos) *
((string * int) * (string * int) * Absyn.tp * Absyn.tp
* Absyn.exp)
さて、これは、タイプの大まかな検査に基づいて、タイプが一致する必要があるように見えます。コードのバグではなく、一般的な解決策が必要なので、それらについては説明しません。
両方の型を基本データ型に展開して、それらの違いを理解することはできますか? これらすべての typedef があちこちに浮かんでいると、物事が混乱し、すべての定義について .sml ファイルを掘り下げて紙に展開を書くのは面倒な解決策のように思えます。
私は次のようなことを言いたいです:
typeof Absyn.fundec
そして、どのような式が有効なファンドデックを生成するのかを理解してください。