1

我想用这个vector包来存储未装箱的数组StablePtr a

我如何使用以下(或其变体):

ptr2Int :: Ptr a -> Int
ptr2Int (Ptr a) = I# (addr2Int# a)

stablePtrToInt :: StablePtr a -> Int
stablePtrToInt = ptr2Int . castStablePtrToPtr

intToStablePtr :: Int -> StablePtr a
intToStablePtr (I# i) = castPtrToStablePtr $ Ptr (int2Addr# i)

声明一个Unbox实例StablePtr a

4

1 回答 1

2

实际上没有必要尝试为 StablePtr 定义 Unbox 实例。由于 StablePtr 是 Storable 的实例,您可以只使用 Data.Vector.Storable 代替。

于 2012-04-01T19:23:38.993 回答