1

首先,我是 repa 的新手,我仍然认为自己是 Haskell 的初学者。

我需要一组有效的双打三胞胎。天真的方法会,[(Double, Double, Double)]但那是无效的。我想我可以使用repa,因为它应该非常有效。但是,我不知道应该如何定义一个三元组数组。

我可以Array U DIM2 Double在第二维中存储三元组的元素(即第一个索引是三元组的索引,第二个索引是三元组的元素)。但是,没有什么可以强制第二维只有 3 大小。

我需要类似的东西,Array U DIM1 Vec3D但这是不可能的,Vec3D因为Data.Vector.Unboxed.Base.Unbox.

4

1 回答 1

3

我可能读错了文档,但我认为Array U DIM1 (Double,Double,Double)这正是你想要的(你为什么不试试呢?)。在你告诉我它是低效的之前:

  • 据我所知,没有Array U sh u约束Shape sh Unbox u. 因此,anyArray U sh u必然是高效的且完全未装箱的。

  • 拆箱注意实例(Unbox a, Unbox b, Unbox c) => Unbox (a, b, c),所以Unbox (Double, Double, Double)是可推导的。

于 2016-06-29T15:27:16.800 回答