Question

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?

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top