SML - 运算符和操作数不一致

时间:2011-05-27 14:06:33

标签: sml

我有这个简单的功能:

val CLC_seq=
       fn (n) =>
       (Cons (n, find_CLC_seq(COL_seq(n))))

当:

find_CLC_sqe is : int seq -> int;
COL_seq is: fn: int -> int seq;

编译器写道:

Error: operator and operand don't agree
operator domain: int * (Unit -> int seq)
operand: int * int
in expression: 
 (Cons (n, find_CLC_seq(COL_seq(n))))

是什么原因?我该如何解决?谢谢。

1 个答案:

答案 0 :(得分:0)

嗯,目前还不清楚你要做的是什么,但编译器是正确的接你。 find_CLC_seq会返回int,这意味着您的Cons正在尝试将int纳入int。这没有任何意义,因为利弊是为了在列表的前面添加一个元素(你的Cons函数期望在{1}}的前面放置一个int(Unit -> int seq) )。

我不知道CLC和COL是什么,但它看起来像是:

您对CLC_seq的定义是错误的,因为如果find_CLC_seq真的要返回int,那么以这种方式使用它是没有意义的;

或者您对find_CLC_seq的定义是错误的,其返回类型应该是int seq或者是一个惰性序列,顾名思义。在这种情况下,错误是您没有向我们展示的一些代码。