[英]Haskell: leafCount function take Tree output Int using fold fun
我將樹類型定義為:
data Tree a = Leaf | Node a (Tree a) (Tree a)
deriving (Show, Eq)
這是一個折疊函數: 如何編寫 a-> b -> b -> b 類型的函數來折疊樹,與我使用的基本相同。
現在我想寫一個函數leafCount :: Tree a -> Integer
,使用 fold 和最多一個輔助函數,我想我需要在不同的情況下區分葉子和節點,但我很難做到這一點,這是我的代碼目前:
leafCount = fold sum (Node a left right)
where
sum left right elem = leafCount left + leafCount right + 1
這段代碼中有很多錯誤,我根本無法弄清楚。 請給我基本的想法和可以改進我的代碼。
您當前的問題是您在=
的錯誤一側進行模式匹配:
leafCount (Node a left right) = fold sum left right a
where sum l r elem = leafCount left + leafCount right + 1
其實真的很簡單,我用的時候忘記加fold函數的base case了!
在我閱讀折疊內容並詢問其他人后,我明白了這一點!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.