IT用語集 › プログラミング › 直和型

直和型

プログラミング Svenska → 更新: 2026-10-21

型システムの機能で、複数の選択肢のうちどれか一つを取り、各選択肢が固有のフィールドを持てる型。Rustのenum、Haskellのdata、Swiftのenum、TypeScriptのユニオン、Javaのsealed interfaceなど。nullとクラス階層に代わる現代的な手段である。

典型例はResult<T, E> = Ok(T) | Err(E)とOption<T> = Some(T) | None(nullの代替)。判別共用体(タグ付きユニオン)は同義語だ。直和型ではパターンマッチの網羅性が検査されるため、バリアントを追加すると全箇所の修正が強制され、コンパイラ主導のリファクタリングになる。全フィールドを同時に持つ直積型(struct)とは対になる概念である。オブジェクト指向では、sealed classとビジターパターンが相当する。Goには無く、Pythonではtyping.Unionが近く、Javaは21より前には無かった。設計原則として知られるのが、Yaron Minskyの「不正な状態を表現不可能にせよ」である。

← 用語集に戻る