2017-10-14 17 views
1

create, de Data.ByteString.Internal, indique qu'il a besoin d'un Ptr Word8 afin de créer un ByteString. Je devine que c'est comme une référence à la tête du bytestring ou quelque chose. Cependant, je ne suis pas sûr de ce que je devrais utiliser pour créer un nouveau pointeur - je suis à peu près sûr que ce n'est pas fait correctement avec nullPtr.Comment créer un Ptr Word8 pour ByteString

Répondre

4

Non, create vous donne un pointeur vers une mémoire pour remplir:

create :: Int -> (Ptr Word8 -> IO()) -> IO ByteString 

Le premier argument est la longueur de bytestring pour créer, le second est une fonction, qui remplit le bytestring. Fondamentalement create alloue un tampon de mémoire de la taille spécifiée, puis appelle la fonction avec le pointeur vers le tampon. Exemple d'utilisation:

> create 5 $ \ptr -> pokeArray ptr [65, 66, 67, 68, 69] 
"ABCDE"