2010-11-27 36 views
2

我正在学习ML,有人能解释一下它是什么意思穷举模式?穷尽模式

+1

我从这个问题中删除了lisp标签,因为我可以看到与lisp无关。 Lisp甚至没有模式匹配。 – sepp2k 2010-11-27 17:35:35

回答

5

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

例如下面的模式匹配不是详尽的,因为它不覆盖的情况下,该列表为空:

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

以下是穷举,因为这两种情况下都覆盖:

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

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