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



我想使用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)

StablePtr a声明一个Unbox实例?

实际上没有必要为StablePtr定义Unbox实例。由于StablePtr是Storable的实例,因此您只能使用Data.Vector.Storable。

最新更新