2011-03-07 130 views
1

所以我試圖編寫一個摺疊基本上只是一個嵌套列表的自定義數據類型的函數。任何幫助將不勝感激!這是迄今爲止我所擁有的。摺疊嵌套列表有點問題

data MyTree a = Node a [MyTree a] deriving (Show, Read, Eq) 

foldMT :: MyTree a -> [a] 
foldMT (Node x) = [x] 
foldMT (MyTree x) = concatMap foldMT x 

我收到以下錯誤消息。這是指foldMT的最後一個聲明。

不在範圍:數據構造`MyTree」

回答

4

那是因爲MyTree不是構造函數。你的摺疊需要是這樣的:

 
foldMT (Node x ts) = x : concatMap foldMT ts 
+0

啊,好吧!非常感謝你。 – 2011-03-07 02:01:08

+0

如果您喜歡答案,請點擊旁邊的綠色複選標記將其標記爲「已接受」。 – 2011-03-07 02:03:34

+0

我會的,我只需要再等幾分鐘才能讓我;) – 2011-03-07 02:06:43