まえがき プログラミングに役立つと筆者が考える範囲で、プログラミングにおける共変性・反変性など(まとめて変性と呼びます)について解説をします。 圏論的な視点の話は、筆者が詳しくなく、さらに一般のプログラミングで重要になることが少なそうなので、今回は省略させていただきます。 先に理解しておく必要がある概念 共変性・反変性について理解するためには「部分型」の概念と、「型構築子」の概念の理解が必要になります。この章ではこの2概念を確認していきます。 部分型(サブタイプ) 「部分型である」/「部分型でない」とは、2つの型の間の関係です。 T2型の値が期待されている箇所で、T2型の値の代わりにT1型の値を渡して問題がないとき、T1はT2の部分型(サブタイプ) であるといいます。T1がT2の部分型であることはよくT1 <: T2 のように表されます。 C#のコードで例を見てみます。下はHumanクラス