I want to use the vector package to store unboxed arrays of StablePtr a

How can I use the following (or variations thereof):

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)

to declare an Unbox instance for StablePtr a?

有帮助吗?

解决方案

There's actually no need trying to define an Unbox instance for StablePtr. Since StablePtr's are instances of Storable you can just use Data.Vector.Storable instead.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top