在Edward Kmett的hybrid-vectors库中,有两个主要的模块:
Data.Vector.Hybrid
和Data.Vector.Mixed
。前者的动机有一篇大文章进行了阐述。后者被提及但没有解释。我想弄清楚它的使用场景。到目前为止我已经注意到了两件事情:
- 有一个带有
Typeable
约束条件的Mixed
类型类。我不理解haddocks中的解释,但看起来Typeable
约束条件必须在某个时候用于恢复类型信息或安全转换。 Vector
数据类型仅针对底层的MVector
参数化。这与Hybrid
模块不同,后者是基于两个向量类型加上一个元组进行参数化的。
head
、length
和indexM
这样的操作并没有什么用处,因为它们只接受一个向量作为参数(而且已经有针对所有其他向量类型工作的这些函数的版本)。但是对于zipWith
,它似乎有些有用,因为有两个向量参数。不,我仍然觉得我漏掉了什么。 - Andrew Thaddeus Martin