В списке изменений для версии 0.8 vector указано следующее изменение с предупреждением:
Функтор, Монад, Аппликативный, Альтернативный, Складной и Траверсируемый экземпляры для вложенных векторов (ПРЕДУПРЕЖДЕНИЕ: они, как правило, медленны и только для полноты).
Может ли кто-нибудь объяснить, почему это так? Это просто нормальная стоимость специализации по типу или интереснее?
Обновление:. Рассматривая некоторые конкретные примеры, можно увидеть, например:
instance Foldable.Foldable Vector where
{-# INLINE foldr #-}
foldr = foldr
и аналогично для других складок. Означает ли это, что сложение в целом Vector
замедляется? Если нет, что делает неспециализированную складку достаточно медленной, чтобы гарантировать предупреждение?