警告:匹配非穷举-处理特定案例(SML)

警告:匹配非穷举-处理特定案例(SML),sml,Sml,考虑以下SML中的列表示例:[[(“foo”~10.0)],[(“goo”~8.0)] 我将链接编写一个函数,该函数将删除主括号,这意味着输出将是: [(“foo”~10.0),(“goo”~8.0)] 我写的函数是: fun inner_list [[]] = [] | inner_list [] = [] | inner_list ((((x:(string*real))::xt)::xs)) = x :: inner_list xs; 它适用于大多数情况,但我知道我没有检查其中一个情

考虑以下SML中的列表示例:
[[(“foo”~10.0)],[(“goo”~8.0)]

我将链接编写一个函数,该函数将删除主括号,这意味着输出将是:

[(“foo”~10.0),(“goo”~8.0)]

我写的函数是:

fun inner_list [[]] = [] | inner_list [] = [] 
|  inner_list ((((x:(string*real))::xt)::xs)) = x :: inner_list xs;
它适用于大多数情况,但我知道我没有检查其中一个情况。我认为这个情况是:

[[],(“foo”,~10.0)]

我知道我没有处理其中一个案例,因为编译器发出警报:

stdIn:1.6-2.68 Warning: match nonexhaustive
      nil :: nil => ...
      nil => ...
      (x :: xt) :: xs => ...
我读了其他关于
警告:match nonexhoustive
警告的文章,但我不知道如何用我的程序解决它

如何处理另一个案件


编辑我知道我的列表只包含一个列表。这就是为什么我不使用
xt
内置的
列表如何。concat

List.concat [[("foo",~10.0)], [("goo",~8.0)]] =
    [("foo",~10.0), ("goo",~8.0)]

为什么你不使用
xt
?@sepp2k,因为我知道列表中只有一个列表。我将编辑我的描述。你需要决定如何处理这种情况。如果你失败了,或者干脆忽略该元素,或者其他什么?
[[],(“foo”,~10.0)]
不是有效的大小写,因为该表达式类型错误。@molbdnilo我希望它返回子列表而不包含
nil
列表。
[[],(“foo”,~10.0)]
将返回[(“foo”,~10.0)]