lained <a href="http://caml.inria.fr/pub/docs/manual-ocaml/emptyvariants.html">here</a>. In particular, when this type appear in a match case, the match case can contain a refutation pattern <code>.</code> to indicate that this impossible.</p><p>A refutation pattern also work with higher-level constructors, for example in this case:</p><pre><code class="ml">type a = A of int | B of no * int
let f : a -&gt; int = function
  | A i -&gt; i
  | B _ -&gt; .</code></pre><p>It also work in product types:</p><pre><