169 похожих чатов

7 ответов

25 просмотров

Ага, BSL.readFile. Интересно, что если, например, сделать так: extract :: BSL.ByteString -> [Word32] extract = run where run :: BSL.ByteString -> [Word32] run "" = [] run s = getWord32LE (BSL.toStrict (BSL.take 4 s)) : run (BSL.drop 4 s) И далее print (take 16 (extract bsl)), то программа проходится по всему файлу. В целом, понятно почему, но как сделать это всё дело ленивым, я как-то понять не могу

ㅤ Атеист
Ага, BSL.readFile. Интересно, что если, например, ...

меня немного волнует паттерн "" тут для бсл

Aleksei (astynax)-Pirogov Автор вопроса
кана
меня немного волнует паттерн "" тут для бсл

Ленивая строка только первый чанк сравнит по идее

ㅤ Атеист
Ага, BSL.readFile. Интересно, что если, например, ...

может бтв взять какую-нибудь готовую либу для стримингового парсинга бинарей?

кана
может бтв взять какую-нибудь готовую либу для стри...

Это скучно! Хочется самому разобраться и понять, как вообще с этой ленью работать

кана
может бтв взять какую-нибудь готовую либу для стри...

Наверное, можно было бы взять и обычный conduit. Всё равно ByteString надо гонять. Хотел сделать, как здесь, но как-то сложно императивный код переписывать, думаю, так делать не надо, надо подумать и написать так, как это должно быть написано на Haskell. (Имплементация на C работает так: храним состояние в структурке (длину уже обработанных данных, 16 байт на сам хеш и 64 байта для буфера. он нужен, на случай если длина блока не будет делиться на 64, мы могли сохранить эти байтики), далее обрабатываем последовательно блоки с помощью hash_update, когда мы придём к последнему блоку, дополним его так, чтобы его длина в байтах была кратна 64, посчитаем в последний раз хеш, вернём хеш hash_finalize)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта