我寫了我的資料型別:
data Tree a = Leaf | Node a Color (Tree a) (Tree a) deriving (Show)
我想使用它,但我不明白如何使用。按照設計,我想創建一個回傳空樹的函式(帶有 的樹Leaf),但我不明白我應該傳遞給建構式什么,我試過這樣的事情:
emptyTree:: Tree a
emptyTree = Tree
我也收到以下警告
Data constructor not in scope: Tree :: t0 -> Tree a ? Perhaps you meant ‘True’
聚苯乙烯
我已經匯入了樹型模塊
uj5u.com熱心網友回復:
型別構造器是Tree,也就是構造一個型別,而不是資料。這里的資料建構式是Leaf和Node,因此它們用于構造物件。型別建構式和資料建構式可以具有相同的名稱,但由于“型別世界”和“值世界”不(真正)相互作用,因此不會給編譯器造成混淆。
因此,您可以在這里使用Leafor Node。這Leaf是唯一有意義的事情,所以:
emptyTree:: Tree a
emptyTree = Leaf
但是你可以Leaf在代碼的任何地方使用,所以沒有必要定義它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/536663.html
標籤:哈斯克尔
上一篇:Haskell:卡片的價值,功能
