2

そこで、標準 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

そして、どのような式が有効なファンドデックを生成するのかを理解してください。

4

1 に答える 1

1

Absyn.fundec は int や bool などの標準型ではないため、Absyn.fundec 型がどのように定義されているかを正確に示すデータ型または型宣言が必要です。

于 2011-07-14T16:30:22.890 に答える