【问题标题】:Why binding not exhaustive?为什么绑定不详尽?
【发布时间】:2020-07-03 13:38:24
【问题描述】:

为什么在最后一行出现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】:

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

    所以是的,您可以忽略警告。或者简化程序。

    【讨论】:

      猜你喜欢
      • 2016-10-22
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 2020-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多