Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如何为stablepr';提供Data.Vector.Unbox实例;哈斯克尔在哪里?_Haskell_Vector_Ghc_Unboxing - Fatal编程技术网

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)