【发布时间】:2015-12-24 04:18:34
【问题描述】:
有人可以帮助或指导我如何在以下实现中理解 fmap 函数。
data Rose a = a :> [Rose a] deriving (Eq, Show)
instance Functor Rose where
fmap f (x :> xs) = (f x) :> fmap (fmap f) xs
tree :: Rose Int
tree = 1 :> [2:>[]]
我不明白的部分(fmap f),为什么它再次进入递归,但它只需要1个参数。这怎么可能,因为它需要2。
第二部分是我不明白为什么这不起作用:
fmap f (x :> xs) = (f x) :> fmap f xs
我希望有人能给我一些关于如何理解这一点的方向。
【问题讨论】: