请考虑以下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
答案 0 :(得分:2)
内置List.concat
怎么样?
List.concat [[("foo",~10.0)], [("goo",~8.0)]] =
[("foo",~10.0), ("goo",~8.0)]