版本0.8的vector的更新日志中列出了以下变更并附带警告:
为boxed向量提供Functor、Monad、Applicative、Alternative、Foldable和Traversable实例(警告:它们往往较慢,只是为了完整性而提供)。
有人能解释一下这是为什么吗?这只是类型类特化的正常代价,还是有更有趣的原因?
更新:查看某些特定实例,可以看到例如:
instance Foldable.Foldable Vector where
{-# INLINE foldr #-}
foldr = foldr
同样地,对于其他折叠操作也是如此。这是否意味着在一般情况下对于Vector
折叠操作很慢?如果不是,那么是什么使得非特化的折叠操作变得足够慢以至于需要发出警告?