Я сериализирую данные, которые могут быть целым числом, объектом (списком) с другими вложенными объектами, и пытаюсь сделать выбор относительно того, какой подход использовать. Из двух, первый заключается в том, чтобы рекурсивно создавать байтовые векторы и копировать их в вызывающих функциях в больший одиночный байтовый вектор; второй - использовать какой-то поток, в который я мог бы написать. В конце концов, несмотря на выбор, я смогу использовать полученный двоичный массив в любой дальнейшей обработке, которая может произойти, e. г. Я бы сжал выходные данные и отправил их по сети или просто записал некоторые их части в файл.
Я хотел бы остаться достаточно функциональным (или полностью), но внедрить быстрый сериализатор. Я использую Racket , хотя любая другая реализация Схемы также подойдет.
Спасибо.
UPDATE:
Ниже приведены примеры, которые я добавил после того, как нашел решение, позволяющее пользователям сэкономить время на поиск способов записи данных:]
write-byte
и write-bytes
особенно полезны, когда вам нужно написать октеты.
> (bytes? (with-output-to-bytes (lambda () (write-byte 42))))
#t
> (bytevector? (with-output-to-bytes (lambda () (write-byte 42))))
#t
> (bytevector->u8-list (with-output-to-bytes (lambda () (write-byte 42))))
{42}
> (bytes->list (with-output-to-bytes (lambda () (write-byte 42) (write-bytes (integer->integer-bytes #x101CA75 4 #f #t)))))
(42 1 1 202 117)