関数型プログラミングを学ぶ際に登場することのある単語として「代数的データ型」というものがあり、直和型はこの代数的データ型の一種である。代数的データ型において、「列挙型はCの列挙体(enum)、直積型はCの構造体(struct)に相当する」という説明に関しては概ね異論はないのだが、その中で一つだけ、「直和型はCの共用体(union)に相当する」という説明だけはかなり違和感のある説明だと思ったため、今回、テーマとして「直和型をC共用体だと説明するのは誤解を生むだけ」という主張を書いていこうと思った次第である。