什么'int?树'意味着在SML错误消息中?

时间:2012-10-11 01:05:15

标签: syntax-error currying smlnj

我为类编写了以下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))

?.是什么意思?

1 个答案:

答案 0 :(得分:0)

这通常与跨模块的可见性受限有关。你的'树'定义是什么样的?您可能需要告诉编译器,一个模块中的“树”类型与另一个模块中的“树”类型相同。