Почему функции, делающие Vector экземпляром Functor, Monad, Applicative, Alternative, Foldable и Traversable, медленными?

Журнал изменений для версии 0.8 vector перечисляет следующие изменения с предупреждением:

Functor, Monad, Applicative, Alternative, Складные и проходимые экземпляры для векторов в штучной упаковке (ВНИМАНИЕ: они имеют тенденцию быть медленными и предоставляются только для полноты) .

Может кто-нибудь объяснить, почему это так ? Это просто обычная стоимость специализации классов типов или что-то более интересное?

Обновление: Глядя на некоторые конкретные экземпляры, можно увидеть, например:

instance Foldable.Foldable Vector where
  {-# INLINE foldr #-}
  foldr = foldr

и аналогично для других складок. Означает ли это, что сворачивание работает медленно для Vector s в целом? Если нет, то что делает не-sp достаточно медленно, чтобы получить предупреждение?

16
задан gspr 28 September 2011 в 12:56
поделиться