我想使用从ByteString
类型构建的REPA数组。我可以使用fromByteString
函数创建一个类型为Array B sh Word8
的数组。但是,computeS
类型数组没有等效的B
函数。
最大的问题是我最后想要ByteString
类型,但函数toByteString
需要Array B sh Word8
类型,我无法创建。
感觉REPA中的bytestring模块没有完全实现。作为比较,向量模块提供computeVectorS
,foreignPointer模块提供computeIntoS
。是否存在字节串缺少等效函数的原因?
答案 0 :(得分:0)
我无法看到如何制作Array B
。它没有任何相关的实例。你想要open an issue吗?
一个明显且最安全的解决方法是从延迟表示中提取一对(Int, Int -> Word8)
并使用unfoldrN
(我可以从bytestring的公共API中找到最合适的函数)。
ByteString
实际上是一个装饰ForeignPtr
,因此您可以使用F
表示(具有Target
个实例),获取ForeignPtr
,并致电Data.ByteString.Internal.fromForeignPtr
。