我正在使用广告库http://hackage.haskell.org/package/ad,我正在寻找最快的遍历来传递其各种功能。
理想情况下,它将是一个使用连续内存数组的数据结构,因此我可以将其传递给C ++世界中的数值解算器。
我最好的选择是什么?
答案 0 :(得分:6)
的可存储实例使用连续内存数组的数据结构,因此我可以将其传递给C ++世界中的数值解算器。
'Storable'约束 - 能够传递给C - 限制了很多可用的数据类型。向量支持非常快bulk operations。另一种选择是Repa阵列。
但是,您将受到限制,因为ad
包需要Functor和Traversable,但它们仅为完整性而提供 - 并且实际上序列化为列表以获取可遍历的实例。 Traversable和Storable永远不会混合,因为Storable属于某些无盒装类型的限制。
答案 1 :(得分:2)
instance Traversable (Data.Functor.Constant a)
(对不起!)