如何使用REPA ByteString表示?

时间:2017-09-10 15:53:25

标签: haskell

我想使用从ByteString类型构建的REPA数组。我可以使用fromByteString函数创建一个类型为Array B sh Word8的数组。但是,computeS类型数组没有等效的B函数。

最大的问题是我最后想要ByteString类型,但函数toByteString需要Array B sh Word8类型,我无法创建。

感觉REPA中的bytestring模块没有完全实现。作为比较,向量模块提供computeVectorS,foreignPointer模块提供computeIntoS。是否存在字节串缺少等效函数的原因?

1 个答案:

答案 0 :(得分:0)

我无法看到如何制作Array B。它没有任何相关的实例。你想要open an issue吗?

一个明显且最安全的解决方法是从延迟表示中提取一对(Int, Int -> Word8)并使用unfoldrN(我可以从bytestring的公共API中找到最合适的函数)。

ByteString实际上是一个装饰ForeignPtr,因此您可以使用F表示(具有Target个实例),获取ForeignPtr ,并致电Data.ByteString.Internal.fromForeignPtr