1

パッケージを使用して、ボックス化されてい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

4

1 に答える 1

2

実際には、StablePtr の Unbox インスタンスを定義しようとする必要はありません。StablePtr は Storable のインスタンスであるため、代わりに Data.Vector.Storable を使用できます。

于 2012-04-01T19:23:38.993 に答える