在Edward Kmett的hybrid-vectors图书馆中,有两个主要模块:Data.Vector.Hybrid
和Data.Vector.Mixed
。有big article写了关于前者背后的动机的文章。后者是顺便提到但没有任何解释。我试图找出它的用例。到目前为止,我注意到了两件事:
Mixed
类型类,有Typeable
个约束。我不理解黑线鳕的解释,但似乎必须要求Typeable
约束来恢复类型信息或在某些时候安全施放。Vector
数据类型仅针对基础MVector
进行参数化。这与Hybrid
模块不同,后者通过两个矢量类型和一个元组进行参数化。我将非常感谢任何有用的见解或(甚至更好)用例的小例子。感谢。
答案 0 :(得分:1)
在我的理解中,Mixed
typesclass将允许使用类型安全函数来解析,合并和折叠Vector,而不是具有并发处理,其中每个矢量同时被解析声明M.Vector g v M.Vector h m
以便在这些向量中找到单个点,然后使用for MVector do |Stream.length g v && Stream h m
在每个向量中找到一个单身,以便使用此键进行折叠key :: mergeStreamwith k d -> Stream k i -> Stream d i instance Singleton key where key = Vector.singleton[ v->(v-> MVector v m) -> MVector m] do transversewithkey g v => key.foldlwithkey g h