SML NJ - 匹配不详尽 - 不确定如何处理

SML NJ - match nonexhausitive - not sure how to handle

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

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

即使该函数计算出正确的数据类型,我仍然收到匹配非详尽警告。

在此示例中,我没有收到相同的警告...

fun func x y = (y, x);

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

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

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