xs
представляет собой список элементов, и foldMap
необходимо применять к отдельным элементам, а не к самому списку. Выполнение этого с map
дает список результатов, которые можно комбинировать с mconcat
:
instance Foldable X where
foldMap f (X x xs) = f x `mappend` mconcat (map (foldMap f) xs)