这片土地上最快的Traversable实例是什么?

时间:2013-03-08 04:48:53

标签: arrays performance haskell

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

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

我最好的选择是什么?

2 个答案:

答案 0 :(得分:6)

  

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

使用unboxed Vector type.

的可存储实例

'Storable'约束 - 能够传递给C - 限制了很多可用的数据类型。向量支持非常快bulk operations。另一种选择是Repa阵列。

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

答案 1 :(得分:2)

instance Traversable (Data.Functor.Constant a)

(对不起!)