How to provide a Data.Vector.Unbox instance for StablePtr's in Haskell?
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
?
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