前回までで多相バリアントの基本的な機能は説明してきました。そこで今回は、多相バリアントのとても重要な応用についてお話したいと思います。それは、場合分け構造の拡張問題です。 場合分け構造の拡張は難しい 例えば、次のようなコードがあったとします。 module Card = struct type t = Num of int | Jack | Queen | King let num = function Num i -> i | Jack -> 11 | Queen -> 12 | King -> 13 end Card.tには4種類の場合分けがあり、それらに対してnumという操作が定義されています。このような場合分け構造+操作に対して、 静的で安全に(キャストせず)、 元のコードを一切変更せず、 新しい場合分けを加え、 新しい操作も加えた 新しい場合分け構造を定義する にはどうすればいい