在Haskell中,代數數據類型(Algebraic Data Types)可以通過data關鍵字來定義。語法如下:
data TypeName = Constructor1 Type1 Type2 ...
| Constructor2 Type3 Type4 ...
| Constructor3 Type5 Type6 ...
...
其中,TypeName是代數數據類型的名稱,Constructor1、Constructor2等是構造子(Constructors),用來表示不同的情況。每個構造子可以帶有參數,參數的類型可以是任意的。代數數據類型可以有多個構造子,每個構造子可以有不同數量和類型的參數。
例如,我們可以定義一個簡單的代數數據類型來表示顏色:
data Color = Red
| Green
| Blue
在這個例子中,Color是代數數據類型的名稱,Red、Green、Blue是構造子。這個代數數據類型表示了三種不同的顏色。
另一個例子是定義一個代數數據類型來表示二叉樹:
data Tree a = Leaf a
| Node (Tree a) (Tree a)
在這個例子中,Tree是代數數據類型的名稱,Leaf和Node是構造子。Leaf構造子表示一個葉子節點,帶有一個值作為參數;Node構造子表示一個內部節點,帶有兩棵子樹作為參數。