Haskell中的代數(shù)數(shù)據(jù)類型怎么定義

小億
87
2024-04-16 17:30:16
欄目: 編程語言

在Haskell中,代數(shù)數(shù)據(jù)類型(Algebraic Data Types)可以通過data關(guān)鍵字來定義。語法如下:

data TypeName = Constructor1 Type1 Type2 ...
              | Constructor2 Type3 Type4 ...
              | Constructor3 Type5 Type6 ...
              ...

其中,TypeName是代數(shù)數(shù)據(jù)類型的名稱,Constructor1、Constructor2等是構(gòu)造子(Constructors),用來表示不同的情況。每個(gè)構(gòu)造子可以帶有參數(shù),參數(shù)的類型可以是任意的。代數(shù)數(shù)據(jù)類型可以有多個(gè)構(gòu)造子,每個(gè)構(gòu)造子可以有不同數(shù)量和類型的參數(shù)。

例如,我們可以定義一個(gè)簡單的代數(shù)數(shù)據(jù)類型來表示顏色:

data Color = Red
           | Green
           | Blue

在這個(gè)例子中,Color是代數(shù)數(shù)據(jù)類型的名稱,Red、Green、Blue是構(gòu)造子。這個(gè)代數(shù)數(shù)據(jù)類型表示了三種不同的顏色。

另一個(gè)例子是定義一個(gè)代數(shù)數(shù)據(jù)類型來表示二叉樹:

data Tree a = Leaf a
            | Node (Tree a) (Tree a)

在這個(gè)例子中,Tree是代數(shù)數(shù)據(jù)類型的名稱,Leaf和Node是構(gòu)造子。Leaf構(gòu)造子表示一個(gè)葉子節(jié)點(diǎn),帶有一個(gè)值作為參數(shù);Node構(gòu)造子表示一個(gè)內(nèi)部節(jié)點(diǎn),帶有兩棵子樹作為參數(shù)。

0