由于this question的答案,我希望能够从Data.Vector.Unboxed.Unbox的实例构造Foreign.Storable.Storable的实例(反之亦然)。这个是可能的吗?
我所知道的最接近的是vector-th-unbox,但它只创建了一个不可装箱的实例。
发布于 2013-05-31 12:23:02
检查vector包。
使用Data.Vector.convert :: (Vector v a, Vector w a) => v a -> w a。
发布于 2015-07-10 19:24:06
vivian已经回答了,您可以使用Data.Vector.Generic模块中提供的convert函数:http://hackage.haskell.org/package/vector/docs/Data-Vector-Generic.html#v:convert
发布于 2013-05-31 05:54:09
我可以想象一种从unbox到storable的非常麻烦的方式,但它确实是非常麻烦和低效的!事实上,在完成它之后,我实际上并不想把它写出来。这个概念就是你能用Unbox做的就是在一个未装箱的向量中使用它。因此,您可以使用单个元素初始化未装箱的向量。给定上述元素,您可以创建一个包含该元素的向量,然后通过邪恶撬开您的vector,并将这些字节直接用于可存储的实例。你可以同样邪恶地走另一条路。
但我不知道你为什么要这么做。默认情况下可以存储的大多数数据类型也是Unbox类型,反之亦然。而对于那些不是这样的人来说,派生Storable非常容易--无论是手动还是使用工具。
https://stackoverflow.com/questions/16843866
复制相似问题