直和、直積、共用、交差
Sum type
直和型
A :+: B (Haskell)
variant
tagged union
disjoint union
Product type
直積型
A :*: B (Haskell)
tuples
records
Union type
共用型
A | B (TypeScript)
Intersection type
交差型
A & B (TypeScript)
Covariance, ContravarianceとUnion/Intersection
TODO