第3章定義了以下遞歸類型來表示二叉樹:真實世界哈斯克爾第3章鍛鍊; Tibial:二叉樹1個值構造
data Tree a = Node a (Tree a) (Tree a)
| Empty
deriving (Show)
的工作需要我用一個值構造實現相同的類型,用「也許」型指子節點:
(從第60頁第3章練習2)
「定義一個只有一個構造函數,像我們的Java例如樹類型,而不是空的。構造函數,使用Maybe類型來參考r到節點的孩子。「
我想出瞭解決辦法如下:
data AltTree a = AltNode a (Maybe (AltTree a)) (Maybe (AltTree a))
deriving (Show)
然而,這不允許含有其他空的樹木,比如一棵樹:
AltNode 1 (AltNode 2 Nothing Nothing) (AltNode 3 Nothing Nothing)
而且我不肯定爲什麼,「Nothing」不是「Maybe」類型的值構造函數?
在線:[RWH>第3章>練習](http://book.realworldhaskell.org/read/defining-types-streamlining-functions.html#id585938) –