在Edward的hybrid-vectors库中,有两个主要模块:Data.Vector.Hybrid和Data.Vector.Mixed。有一个关于前者背后的动机的big article。后者是顺带提及的,但缺乏任何解释。我想弄清楚用例是做什么用的。到目前为止,我注意到了两件事:
Mixed约束的Typeable类型类型。我不理解haddocks中的解释,但似乎必须使用Typeable约束来恢复类型信息或在某个时候安全地进行强制转换。Vector数据类型仅在基础MVector上进行参数化。这与Hybrid模块不同,该模块通过两个向量类型和一个元组对其进行参数化。我希望有任何有用的见解或(更好的)用例的小例子。谢谢。
发布于 2015-04-21 13:50:01
据我理解,Mixed类型类将使类型安全函数的使用能够通过向量来解析、合并和折叠,而不是有一个并发过程,其中每个向量被同时解析,从而声明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折叠。
https://stackoverflow.com/questions/29749506
复制相似问题