0
我有這個簡單的功能: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))))
的原因是什麼?我該如何解決它?謝謝。
非常感謝,但我仍然沒有得到什麼問題。 find_CLC_seq返回一個int(如我寫的:find_CLC_sqe是:int seq - > int;)。所以它會做Cons(int,int)。爲什麼編譯器將它看作Unit - > int seq? – Tom 2011-05-27 14:38:32
CLC_seq的類型是由編譯器定義的。 – Tom 2011-05-27 14:44:27
是的,你的代碼試圖將int賦給int(這就是它說'操作數:int * int'時的含義)。 Cons構造函數不需要這些參數;它的意思是用來對整數進行序列化。 Cons的類型將是'int *(Unit - > int seq) - >(Unit - > int seq)',這就是它表示'operator domain'的輸入時的含義。 '操作數'是你試圖傳遞它的'操作符域'是你應該傳遞的東西。 – 2011-05-27 14:50:40