Purpose of Data.Vector.Mixed



在Edward Kmett的混合向量库中,有两个主要模块:Data.Vector.HybridData.Vector.Mixed。有一篇关于前者背后的动机的大文章。后者是顺便提到的,但没有任何解释。我试图弄清楚它的用例是什么。到目前为止,我注意到两件事:

  1. 有一个具有Typeable约束的Mixed类型类。我不明白黑线鳕中的解释,但似乎必须需要Typeable约束才能恢复类型信息或在某些时候安全投射。
  2. Vector数据类型仅在基础MVector上参数化。这与Hybrid模块不同,在模块中,它通过两个向量类型加上一个元组进行参数化。

我将不胜感激任何有用的见解或(甚至更好的)用例的小示例。谢谢。

根据我的理解,Mixed typeclass 将使类型安全函数的使用能够解析、合并和折叠 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

最新更新