【だいすうてきデータがた】
代数的データ型 とは?
💡 「かけ算」と「たし算」でどんなデータ構造も作れる型の代数学。
📌 このページのポイント
代数的データ型って、数学の代数と関係あるの?
実はあるんだ。型を「かけ算(AND)」と「たし算(OR)」で組み合わせるという発想が代数の演算と対応しているからそう呼ばれているよ。
かけ算の型って何なの?
直積型(Product Type)というんだ。複数のフィールドを「AND」でまとめた型だよ。たとえば「名前と年齢の両方を持つUser型」がそれにあたる。Rustの struct や、多くの言語のクラスがこれにあたるよ。
じゃあたし算の型は?
直和型(Sum Type)といって、「どれか1つ」を表す型だよ。たとえば「成功か失敗のどちらか」を表す Result 型がそれだね。Rustの enum が典型例で、`Ok(値)` か `Err(エラー)` のどちらかの状態しか持てないんだ。
それって null チェックと何が違うの?
Scalaの sealed trait+case class、TypeScriptのUnion型、Swiftのenum with associated valuesなどが近い概念だよ。関数型言語の影響を受けた言語では広く採用されている考え方なんだ。
まとめ:ざっくりこれだけ覚えればOK!
「代数的データ型」って出てきたら「ANDとORで型を組み立てる仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Algebraic Data Type」 = 代数的データ型
💬 algebra(代数)は「足し算・かけ算などの演算」のこと。型の組み合わせ方がまさに代数の演算と対応しているから、こう呼ばれているんだよ。