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

时间:2018-05-17 19:23:48

标签: 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;

它适用于大多数情况,但我知道我没有检查其中一个案例。我认为这个案例是:

[[],("foo", ~10.0)]

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

stdIn:1.6-2.68 Warning: match nonexhaustive
      nil :: nil => ...
      nil => ...
      (x :: xt) :: xs => ...

我阅读了与Warning: match nonexhaustive警告相关的其他文章,但我并不了解如何使用我的程序来解决它。

如何处理其他案件?

编辑我知道我的列表只包含一个列表。这就是我不能使用xt

的原因

1 个答案:

答案 0 :(得分:2)

内置List.concat怎么样?

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