2

クラス用に作成した次の SML コードがあります。

fun lookup (cmp: 'a * 'a -> order) (x: 'a, t: 'a tree) : 'a option =
    case t of
      Empty => NONE
    | Node(l,y,r) =>
      case cmp(x,y) of
        EQUAL => SOME y
      | LESS => lookup (cmp) (x,r)
      | GREATER => lookup (cmp) (x,l)

これをテストする場合:

val SOME 3 = lookup Int.compare (3, Node(Empty,3,Empty));

そして、次のエラーが返されます:

stdIn:153.1-166.12 Error: operator and operand don't agree [tycon mismatch]
  operator domain: int * int ?.tree
  operand:         int * int tree
  in expression:
    (lookup Int.compare) (3,Node (Empty,3,Empty))

とは?.どういう意味ですか?

4

1 に答える 1

0

これは通常、モジュール間の可視性の制限に関係しています。「ツリー」の定義はどのように見えますか? あるモジュールの「ツリー」タイプが別のモジュールのタイプと同じであることをコンパイラーに伝える必要がある場合があります。

于 2012-10-16T21:52:34.373 に答える