Haskell 如何为stablepr';提供Data.Vector.Unbox实例;哈斯克尔在哪里?
我想使用Haskell 如何为stablepr';提供Data.Vector.Unbox实例;哈斯克尔在哪里?,haskell,vector,ghc,unboxing,Haskell,Vector,Ghc,Unboxing,我想使用vector包来存储StablePtr a 我如何使用以下(或其变体): 要为StablePtr a?声明一个Unbox实例,实际上没有必要为StablePtr定义一个Unbox实例。由于StablePtr是Storable的实例,您可以使用Data.Vector.Storable来代替。您确定不想使用Data.Vector.Storable吗?,StablePtr是Storable.oh thanx的实例,作为提示:)我想可以。@danvari您介意将您的答案作为答案写下来,以便我可以
vector
包来存储StablePtr a
我如何使用以下(或其变体):
要为
StablePtr a
?声明一个Unbox
实例,实际上没有必要为StablePtr定义一个Unbox实例。由于StablePtr是Storable的实例,您可以使用Data.Vector.Storable来代替。您确定不想使用Data.Vector.Storable吗?,StablePtr是Storable.oh thanx的实例,作为提示:)我想可以。@danvari您介意将您的答案作为答案写下来,以便我可以接受它。顺便说一句,我假设内存使用情况与未固定向量相同。
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)