代数データ型
代数的データ型(英: algebraic data type)とはプログラミング、特に関数型プログラミングや型システムにおいて使われるデータ型
Haskellではdataキーワードを使って、以下のような代数データ型が定義できる
code:tree.hs
data Node = Leaf Integer | Branch Node Node
deriving (Show)
Node
Leaf, Branchはデータコンストラクタ
Branchが取るNodeはBranchコンストラクタの引数。
code:memo.hs
data Bool = True | False
data Either = Left a | Right b
-- a, bはコンストラクタの引数
列挙型
直積型(product type)
直和型(sum type
列挙型
他言語のenum
直積型
複数のデータをまとめて取り扱う型のこと
直積型の例は
配列
タプル
Cの構造体
レコード
オブジェクト
直和型
いくつかのクラスに分類されたデータのうちいずれかひとつのデータを持つ型
数学でのHaskellの対応は以下
数学 プログラム (Haskell)
0 Void
1 ()(???)
2 Bool(???)
a+b Either a b
特に a+1 Maybe a
a×b (a, b)
ba a -> b
確認用
Q. 代数的データ構造
Q. 代数的
Q. 直積型
Q. 直和型
参考