SML NJ - 匹配nonexhausitive - 不知道如何处理

时间:2015-11-15 23:40:29

标签: smlnj

我想定义一个带3个参数并返回列表的函数。参数将是任何类型,然后其他两个参数是任何类型的列表。这是一个例子......

fun func x [y] [z] = [x, y, z];

即使函数评估为正确的数据类型,我也会得到匹配非详尽的警告。

在这个例子中,我没有得到同样的警告......

fun func x y = (y, x);

应该是因为列表,但我不知道如何处理它,所以我实际上没有看到警告。

1 个答案:

答案 0 :(得分:1)

你收到了警告,因为你只告诉你的函数在传递一个元素和两个列表时要做什么,其中每个列表只有1个元素。如果这些列表中的一个或两个具有少于1个或多于1个元素会发生什么?

您熟悉@吗?它可能会帮助你编写你似乎有意写的函数,但没有那个警告。