「関数プログラミングとはなんですか?」と問われたときには「デ,データファースト……(震え声)」と答えることが多いのだが,実際 Haskell や OCaml などの言語を特徴付けるものとして,代数的データ型 (Algebraic Data Type; ADT) の存在は無視できないだろう.その有用性ゆえに,近年では新たな言語の策定の際にその概念が輸出され,Rust や Swift などの言語にも採用されている. 「代数的データ型とはなんですか?」と問われたときには——問われたことがないのでわからないのだが——おもむろに ghci か utop を立ち上げて,解説を始めるのではないかと思う.ひとしきり解説をした後,「つまり直積の直和なんですよ〜🙌✨」と言って話を締めくくるだろう. int 型や float 型など,「メモリ上の表現」という計算機の気持ちに極めて寄り添ったプリミティヴなデータ
![代数的データ型と初等代数学](https://cdn-ak-scissors.b.st-hatena.com/image/square/97c769fc6d1b8083631a6e0398c102909cc7d623/height=288;version=1;width=512/https%3A%2F%2Fblog.ryota-ka.me%2Fposts%2F2018%2F07%2F09%2Falgebraic-data-types-and-elementary-algebra%2Fpreview.png)