私はドキュメントを見ていて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
か?