为什么在最后一行显示binding not exhaustive
警告?
datatype fruit = Apple
datatype sizedFruit = Big of fruit | Small of fruit
val Big x = Big Apple;
[我认为绑定是详尽无遗的,因为在一个唯一的情况下,RHS表达式将LHS模式与x = Apple
匹配。因此,我可以安全地忽略此警告吗?
警告通过将第2行替换为datatype sizedFruit = Big of fruit
而消失,但是我的实际用例负担不起。预先感谢。
编译器:新泽西州标准ML(64位)v110.96
穷举的定义不考虑绑定的RHS,仅考虑样式本身。否则,定义将更加复杂。在实践中,这已经足够了,因为没有太多理由像上面那样写绑定而不是简单的val x = Apple
了。也就是说,在这种情况下,您可以将警告作为冗余代码的指示。 :)
所以,可以忽略该警告。或简化程序。