尝试使用以下代码创建可折叠的数据树实例:
然而,这段代码并未起作用,它产生的错误是:
有人知道为什么/如何使其工作吗?
data Rose a = a :> [Rose a]
deriving (Eq, Show)
instance Foldable Rose where
fold (a:>b) = a <> (map fold b)
然而,这段代码并未起作用,它产生的错误是:
Could not deduce <m ~ [m]>
from the context <Monoid m>
bount by the type signature for fold :: Monoid m => Rose m -> m
...
In the return type of a call of 'map'
...
有人知道为什么/如何使其工作吗?
Foldable
时实现foldMap
。当您实现几个foldMap
时,您会开始注意到它们具有规则的形状。 - Sjoerd Visscher