主流のオブジェクト指向言語では、オブジェクト指向サブタイプと同様のタイプの問題を解決しているため、一般に合計タイプはあまり有用ではありません。それらを見る1つの方法は、両方ともサブタイプを処理することですが、OOはopen
親タイプに任意のサブタイプを追加できること、closed
つまり合計タイプは有効なサブタイプを事前に決定することです。
現在、多くのオブジェクト指向言語は、サブタイピングを、継承された構造体、ポリモーフィズム、参照タイピングなどの他の概念と組み合わせて、一般的にそれらをより便利にします。その結果、(クラスやコンストラクターなどを使用して)セットアップするのに手間がかかる傾向があるため、ジェネリックタイピングが一般的になるまでsやResult
sなどOption
のようなものには使用されない傾向がありました。
また、ほとんどの人がオブジェクト指向プログラミングを始めたときに学んだ実世界の関係に焦点を当てているのは、たとえば、犬is動物、整数isa結果またはエラーisa結果は少し異様に見えることを意味します。アイデアは非常に似ていますが。
関数型言語がオープンタイピングよりもクローズドタイピングを好む理由について、考えられる理由の1つは、パターンマッチングを好む傾向があることです。これは関数の多相性に役立ちますが、コンパイラがすべてのサブタイプを網羅していることをコンパイラが静的にチェックできるため、閉じた型でも非常にうまく機能します。これにより、言語に一貫性を持たせることができますが、固有の利点はないと思います(誤解される可能性があります)。