2010-11-27 89 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 

當且僅當存在默認情況或者存在所有構造函數的情況並且每個子模式的匹配是詳盡的時,通常情況下,代數數據類型上的模式匹配是詳盡無遺的。