Pregunta

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?

¿Fue útil?

Solución

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top