详尽的模式

时间:2010-11-27 16:57:00

标签: functional-programming pattern-matching sml smlnj

我正在学习ML,有人可以解释一下详尽的模式是什么意思吗?

1 个答案:

答案 0 :(得分:5)

如果模式匹配不能失败,则模式匹配是详尽无遗的。即可能发生的所有情况都由模式涵盖。

例如,以下模式匹配并非详尽无遗,因为它不包括列表为空的情况:

fun sum (x::xs) = x + sum xs

以下是详尽无遗的,因为两个案例都包括在内:

fun sum (x::xs) = x + sum xs
  | sum [] = 0

通常,代数数据类型的模式匹配是穷举的,当且仅当存在默认情况或所有构造函数都存在并且每个子模式的匹配都是详尽的时。