我得到了这两个问题对于这个功能: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'的输入和输出是什么。 –