В разделе GADT главы "aa Расширения языка" официальных документов OCaml представлены случаи опровержения формы _ -> .
. Тем не менее, я думал, что сопоставление с образцом уже было исчерпывающим, поэтому я не уверен, когда фактически требуется опровержение.
Пример, приведенный в документе, выглядит следующим образом:
type _ t =
| Int : int t
| Bool : bool t
let deep : (char t * int) option -> char = function
| None -> 'c'
| _ -> .
Но даже в документах говорится, что этот случай опровержения является излишним. Есть ли пример, когда для проверки типа необходим случай опровержения?