SML的case表达式中的运行时错误

时间:2019-02-22 15:12:00

标签: sml

我正在JOIN中研究codereview.stackexchange.com。我碰到以下话:

  pattern matching中的

SML表达式可能会得到编译错误和运行时错误。

我知道如何使用case创建编译错误,但是如何创建运行时错误?

1 个答案:

答案 0 :(得分:0)

在非穷举匹配的情况下可能会发生:

datatype directions = North | South | East | West

fun turn d = case d of
  North => East
 |East => South
 |South => West

这会编译(尽管带有Warning: match nonexhaustive)。但是然后:

turn West

将触发运行时错误:

uncaught exception Match [nonexhaustive match failure]

我想不出case语句中的运行时错误,该错误至少不会触发警告(除了{{1}之后的表达式的平凡方式之外) },其中一种情况本身可能会引发错误。