我得到了這兩個問題對於這個功能:SML:錯誤:匹配冗餘和警告:符合非排他性
fun funion([(x:int list,y:bool list)]) =
let
fun join(nil,final) = final |
join(x::xs,final) = join(xs,union(x,final)) |
join(_,final) = final
in
join([(x,y)],(nil,nil))
end;
以下是錯誤:
sets.sml:30.6-32.27 Error: match redundant
(nil,final) => ...
(x :: xs,final) => ...
--> (_,final) => ...
sets.sml:28.5-35.4 Warning: match nonexhaustive
(x,y) :: nil => ...
有誰知道什麼可能是去這裏?我也嘗試加入(_),但那也不起作用。不知道這裏有什麼問題。
未捕獲的異常錯誤
編輯:
這裏是聯盟的定義:
fun union((w:int list,x:bool list),(y:int list,z:bool list)) =
let
fun join((nil,nil),final) = final |
join((w::ws,x::xs),(intfinal,boolfinal)) = if x andalso elementOf(w,(intfinal,boolfinal))=false then join((ws,xs),(w::intfinal,true::boolfinal)) else join((ws,xs),(intfinal,boolfinal)) |
join(_,final) = final
in
join((w,x),join((y,z),(nil:int list,nil:bool list)))
end;
什麼是'union'?它既不是由您定義的,也不是標準基礎的一部分。另外 - 它是否真的打算定義一個函數('funion'),它只能應用於一個具有1個元素的列表?我沒有看到'funion([(x:int list,y:bool list)])'與'funion(x:int list,y:bool list)'相對的任何理由。 –
我自己宣佈工會。它找到兩組整數的聯合。funion找到n個集合的聯合。所以我遞歸地調用當前集合上的連接以及之前所有集合的連接。 – user3685346
如果它是你定義的一部分,你應該包括'union',並且更加清楚地解釋'funion'的輸入和輸出是什麼。 –