我有下面的代碼的一個問題,在SML:SML:如何比較(< or >)2種平等類型
fun inter s1 s2 =
let
fun inter' [] _ interSet = interSet
| inter' _ [] interSet = interSet
| inter' (x1::s1) (x2::s2) interSet =
if x1=x2 then
inter' s1 s2 (x1::interSet) (* Add the value to the intersection and advance in both s1 and s2*)
else if x1 < x2 then
inter' s1 (x2::s2) interSet (* Keep going through s1 *)
else
inter' (x1::s1) s2 interSet (* Keep going through s2 *)
in
if s1=[] orelse s2=[] then []
else
inter' s1 s2 []
end;
的間函數返回一個包含兩個有序列表S1之間的交叉點的列表和s2(即在s1和s2中找到的值)。我期待它人人平等工種,但功能類型是:
val inter = fn: int list -> int list -> int list
爲什麼不:
val inter = fn: ''a list -> ''a list -> ''a list ?
它看起來像問題來自
x1 < x2
我是否錯誤地認爲<運算符對於所有相等類型都是重載的?它不應該比較字符串嗎?
請不要忘記標記答案,如果他們幫助你接受。另外,upvote他們。 –