Опитвам се да намеря екземпляр на Foreign.Storable
за Maybe
. Google намери екземпляр от C2HS
instance Storable a => Storable (Maybe a) where
sizeOf _ = sizeOf (undefined :: Ptr ())
alignment _ = alignment (undefined :: Ptr ())
peek p = do
ptr <- peek (castPtr p)
if ptr == nullPtr
then return Nothing
else liftM Just $ peek ptr
poke p v = do
ptr <- case v of
Nothing -> return nullPtr
Just v' -> new v'
poke (castPtr p) ptr
но също и публикация за това как изтича памет. Има ли съществуващ екземпляр някъде другаде или начин за подобряване на екземпляра на C2HS? Защо няма екземпляр в Foreign.Storable
като начало?
Nothing
като точно еквивалентно наnullPtr
, можете лесно да напишете това без изтичане. В противен случай не виждам начин да напиша това, без да правя ръчно управление на паметта (или да загубя полиморфизъм). - person John L   schedule 11.08.2014Maybe
стойности, всичко това е временно нещо само в Haskell. - person crockeea   schedule 11.08.2014Storable
за временни данни в Haskell? - person John L   schedule 11.08.2014