我正在查看文档Data.Traversable并遇到了fmapDefault- https://downloads.haskell.org/~ghc/latest/docs/html/libraries/base/Data-Traversable.html#g:3
fmapDefault :: Traversable t => (a -> b) -> t a -> t b
该文件指出 -
如果定义了 traverse,则此函数可以用作 Functor 实例中 fmap 的值。
所以大概它可以用来导出fmap一个Traversable实例。然而,Traversable作为Functor一个超类。
class (Functor t, Foldable t) => Traversable t where
...
所以你不能在不先定义Traversable实例的情况下定义Functor实例!并且无论你有一个Traversable,你都可以访问一个fmap,这相当于(并且可能比更有效)fmapDefault。
那么将在哪里使用fmapDefault,而不是更熟悉fmap?