我正在JOIN
中研究codereview.stackexchange.com
。我碰到以下话:
pattern matching
中的
SML
表达式可能会得到编译错误和运行时错误。
我知道如何使用case
创建编译错误,但是如何创建运行时错误?
答案 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}之后的表达式的平凡方式之外) },其中一种情况本身可能会引发错误。