EnumやUnionは排他的(和)な状態を持つことができるものといえる。

逆に共存(積)する状態は通常のStructなどだね。

もしこれらを組み合わせられるなら、複雑に入り混じる条件を実現させることができる

代数的データ型ADTとは?