[OCaml] パターンマッチの順番

OCamlコンパイラはパターンマッチをおこなう順番を入れ替えている。
リストの場合、
[] ->

h :: t ->

というパターンマッチがあると、ふたつを入れ替えても[]を先にテストする。optionはNoneを先にテストする。
コンストラクの宣言順は関係あるきがするけど、詳しいことはわかんない。