2

我正在使用广告库http://hackage.haskell.org/package/ad,我正在寻找最快的可遍历传递给它的各种功能。

理想情况下,它将是一个使用连续内存数组的数据结构,因此我可以将其传递给 C++ 世界中的数值求解器。

我最好的选择是什么?

4

2 回答 2

6

一种使用连续内存数组的数据结构,因此我可以将其传递给 C++ 世界中的数值求解器。

使用未装箱 Vector 类型的 Storable 实例。

“可存储”约束——能够传递给 C——极大地限制了您的可用数据类型。向量支持非常快速的批量操作。另一种选择是 Repa 数组。

但是,您将受到限制,因为该ad包需要 Functor 和 Traversable,但它们只是为了完整性而提供 - 并且实际上序列化为列表以获取可遍历的实例。Traversable 和 Storable 永远不会混合使用,因为 Storable 仅限于某些未装箱的类型。

于 2013-03-08T08:31:16.417 回答
2

instance Traversable (Data.Functor.Constant a)

(对不起!)

于 2013-03-08T22:50:29.167 回答