Как предоставить экземпляр Data.Vector.Unbox для StablePtr в Haskell? - PullRequest
1 голос
/ 01 апреля 2012

Я хочу использовать пакет 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 Ответ

2 голосов
/ 01 апреля 2012

Нет необходимости пытаться определить экземпляр Unbox для StablePtr. Поскольку StablePtr являются экземплярами Storable, вы можете просто использовать Data.Vector.Storable.

...