Я смотрю на документацию для Data.Traversable
и наткнулся на fmapDefault
- https://downloads.haskell.org/~ghc/latest/docs/html/libraries/base/Data-Traversable.html#g:3Что такое «fmapDefault» в «Data.Traversable»?
fmapDefault :: Traversable t => (a -> b) -> t a -> t b
-сдаточной документации говорится, что -
Эта функция может быть использована в качестве значения БПМЖ в экземпляре Functor, при условии, что траверс определен.
Так, предположительно это может быть использовано для выведения fmap
для Traversable
экземпляра. Однако Traversable
имеет Functor
как суперкласс.
class (Functor t, Foldable t) => Traversable t where
...
Таким образом, вы не можете определить Traversable
экземпляр без определения экземпляра Functor
первым! И где бы вы ни находились Traversable
, у вас есть доступ к fmap
, что эквивалентно (и, возможно, более эффективно, чем) fmapDefault
.
Итак, где бы вы использовали fmapDefault
, а не намного знакомы fmap
?
«Вы не можете определить экземпляр« Traversable », не указав сначала экземпляр« Functor »! Ну, «первый» - это такой белковый термин ... –
Да, это был немного мозговой пердит. Как и предполагалось, 1 приходит до 2, из-за многолетнего подсчета процессуально от 0 до 10. И тогда вы рассматриваете вопрос - что на первом месте, «-1» или «-2», и просвещены. –