如何在Haskell中为StablePtr提供Data.Vector.Unbox实例?

时间:2012-04-01 15:40:08

标签: haskell vector ghc unboxing

我想使用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个实例?

1 个答案:

答案 0 :(得分:2)

实际上不需要尝试为StablePtr定义Unbox实例。由于StablePtr是Storable的实例,因此您可以使用Data.Vector.Storable。