gpt4 book ai didi

Haskell - 树的 fmap 和 foldMap

转载 作者:行者123 更新时间:2023-12-01 08:48:16 24 4
gpt4 key购买 nike

我是 Haskell 的新手,我有点卡住了

data Tree a = Empty | Leaf a | Branch a (Tree a) (Tree a)
deriving (Show)

我想创建一个 fmap 和一个 foldMap ,所以我试过了
instance Functor Tree where
fmap f (Leaf x) = Leaf (f x)
fmap f (Branch a left right) = Branch a (fmap f left) (fmap f right)

它根本不起作用,我不明白为什么,我很确定问题出在这里
.. = Branch a (fmap f left) (fmap f right)

无论如何,我真的可以对 fmap 和 foldMap 使用一些帮助,实际上我有一个想法,但我没有正确的语法。

谢谢您的帮助。

最佳答案

您忘记应用函数 fa s 包含在 Branch 中节点也是如此,否则您只能在叶子上应用该功能。此外,您忘记了 Empty 的案例构造函数。

instance Functor Tree where
fmap f Empty = Empty
fmap f (Leaf x) = Leaf (f x)
fmap f (Branch a left right) = Branch (f a) (fmap f left) (fmap f right)

关于Haskell - 树的 fmap 和 foldMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49042795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com