1

create, from Data.ByteString.Internal, states that it needs a Ptr Word8 in order to create a ByteString. I'm guessing this is like a reference to the head of the bytestring or something. However, I'm not sure what I should use to create a new pointer - I'm fairly sure it's not done properly with nullPtr.

Athan Clark
  • 3,886
  • 2
  • 21
  • 39

1 Answers1

4

No, create gives you a pointer to a memory to fill:

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

The first argument is the length of bytestring to create, the second is a function, that fills the bytestring. Basically create allocates memory buffer of the specified size, then calls the function with the pointer to the buffer. Usage example:

> create 5 $ \ptr -> pokeArray ptr [65, 66, 67, 68, 69]
"ABCDE"
Yuras
  • 13,856
  • 1
  • 45
  • 58