我在看的文檔Data.Traversable
和碰到fmapDefault
- https://downloads.haskell.org/~ghc/latest/docs/html/libraries/base/Data-Traversable.html#g:3'Data.Traversable'中的'fmapDefault'有什麼意義?
fmapDefault :: Traversable t => (a -> b) -> t a -> t b
的文檔狀態 -
該功能可以作爲一個函子實例FMAP值,只要定義了遍歷。
因此推測它可以用於派生的Traversable
實例。但是,Traversable
作爲超類具有Functor
。
class (Functor t, Foldable t) => Traversable t where
...
所以,你如果不首先定義Functor
實例定義Traversable
實例!無論您在哪裏擁有Traversable
,都可以訪問fmap
,這相當於(也可能比fmapDefault
更高效)。
那麼在哪裏使用fmapDefault
,而不是更熟悉的fmap
?
「如果不先定義'Functor'實例,就不能定義'Traversable'實例!那麼,「第一」是這樣一個瘋狂的術語... –
是的,這是一個大腦放屁。就像假設1在2之前,由於多年來從0到10的程序性計數。然後你考慮這個問題 - 首先是什麼,'-1'或'-2',並且是開明的。 –