次のコードを使用して、データ ツリーの折りたたみ可能なインスタンスを作成しようとしています。
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'
...
なぜ/どのように機能させるのか知っている人はいますか?