Сопоставление с образцом является исчерпывающим, если оно не может потерпеть неудачу. То есть все возможные случаи охватываются шаблоном.
Например, следующее сопоставление с образцом не является исчерпывающим, поскольку оно не охватывает случай, когда список пуст:
fun sum (x::xs) = x + sum xs
Нижеследующее является исчерпывающим, поскольку охватываются оба случая:
fun sum (x::xs) = x + sum xs
| sum [] = 0
Как правило, сопоставление с образцом в алгебраическом типе данных является исчерпывающим тогда и только тогда, когда существует регистр по умолчанию или регистр для всех конструкторов, а совпадение для каждого подшаблона является исчерпывающим.