Как конвертировать Haskell Traversable в вектор?

Если у меня есть Traversable экземпляр xs, как его преобразовать в Vector?

Ответ 1

Все экземпляры Traversable также Foldable, поэтому вы можете написать что-то вроде

toVector :: Foldable t => t a -> Vector a
toVector = Vector.fromList . Foldable.toList
{-# INLINE toVector #-}

Это может сделать промежуточный список, хотя, если это не сгорит. Вставка должна помочь сделать слияние более вероятным.