исчерпывающие модели - PullRequest
       6

исчерпывающие модели

2 голосов
/ 27 ноября 2010

Я изучаю ML, может кто-нибудь объяснить, что означает исчерпывающий паттерн?

1 Ответ

5 голосов
/ 27 ноября 2010

Сопоставление с образцом является исчерпывающим, если оно не может потерпеть неудачу. То есть все возможные случаи охватываются шаблоном.

Например, следующее сопоставление с образцом не является исчерпывающим, поскольку оно не охватывает случай, когда список пуст:

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

Нижеследующее является исчерпывающим, поскольку охватываются оба случая:

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

Как правило, сопоставление с образцом в алгебраическом типе данных является исчерпывающим тогда и только тогда, когда существует регистр по умолчанию или регистр для всех конструкторов, а совпадение для каждого подшаблона является исчерпывающим.

...