为什么绑定不详尽?

问题描述 投票:0回答:1

为什么在最后一行显示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

pattern-matching sml smlnj ml
1个回答
0
投票

穷举的定义不考虑绑定的RHS,仅考虑样式本身。否则,定义将更加复杂。在实践中,这已经足够了,因为没有太多理由像上面那样写绑定而不是简单的val x = Apple了。也就是说,在这种情况下,您可以将警告作为冗余代码的指示。 :)

所以,可以忽略该警告。或简化程序。

© www.soinside.com 2019 - 2024. All rights reserved.