-3
這裏是我的ADT:Haskell,如何將ADT轉換爲字符串?
data Tree a = Val Integer
|Tree a
|Variable a
我有兩個問題:
問題1:使用樹字符串類型來表示一些樹木?
問題2:定義一個函數轉換一棵樹,數據類型樹字符串字符串的元素:showTree ::樹字符串 - >字符串
這裏是我的ADT:Haskell,如何將ADT轉換爲字符串?
data Tree a = Val Integer
|Tree a
|Variable a
我有兩個問題:
問題1:使用樹字符串類型來表示一些樹木?
問題2:定義一個函數轉換一棵樹,數據類型樹字符串字符串的元素:showTree ::樹字符串 - >字符串
關於你的第二個問題,coverting一樹轉換成字符串,就得出Show
和使用show
功能:
data Tree a = Val Integer
| Tree a
| Variable a
deriving (Eq, Ord, Show)
showTree :: (Show a) => Tree a -> String
showTree = show
我不明白你的第一個問題,所以我只是要商量了一下,希望的東西我說可以幫助你。
瞭解您的「樹」數據類型根本不是一棵樹,它只是一個總和數據類型,可以通過整型或某種類型與類型變量a
匹配來實例化。第二個構造函數Tree
實際上並沒有讓你的數據類型遞歸 - 它只是一個構造函數的名字,方式相同Variable
是一個構造函數名。我想你也許想有子樹(通過使用Tree
作爲一個類型,而不是一個構造函數) - 讓我們定義類型爲:
data Tree a = Val Integer
| Branch (Tree a) (Tree a)
| Variable a
現在你有一個構造函數命名Branch
具有左,右子-樹。如果您的變量應該是String
當時的你當然可以使用Tree String
表示這樣的:
myTree :: Tree String
myTree =
let leftBranch = Variable "x"
rightBranch = Branch (Val 3) (Variable "y")
in Branch leftBranch rightBranch
對不起,我不明白你的問題。你能澄清嗎? –
我有Tree數據類型,問題是使用Tree String類型來表示某些樹。 – Sam