Как создать Ptr Word8 для ByteString

создать из Data.ByteString.Internal , указывает, что для создания ByteString требуется Ptr Word8. Я предполагаю, что это похоже на ссылку на заголовок строки байтов или что-то в этом роде. Однако я не уверен, что мне следует использовать для создания нового указателя - я вполне уверен, что это неправильно с nullPtr.


person Athan Clark    schedule 14.10.2017    source источник


Ответы (1)


Нет, create дает вам указатель на память для заполнения:

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

Первый аргумент — длина создаваемой строки байтов, второй — функция, которая заполняет строку байтов. В основном create выделяет буфер памяти указанного размера, затем вызывает функцию с указателем на буфер. Пример использования:

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