簡體   English   中英

Haskell:leafCount 函數使用 fold fun 獲取 Tree 輸出 Int

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM