exhaustive patterns

roo*_*kie 2 functional-programming sml smlnj pattern-matching

I'm learning ML, can somebody please explain what does it mean exhaustive patterns?

sep*_*p2k 5

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

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

fun sum (x::xs) = x + sum xs
Run Code Online (Sandbox Code Playgroud)

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

fun sum (x::xs) = x + sum xs
  | sum [] = 0
Run Code Online (Sandbox Code Playgroud)

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