Size: a a a

2021 May 14

¯

¯\_(ツ)_/¯ in Haskell
можно ли как-то в bytestring установить позицию, с которой надо читать значения? (аналог fseek)
источник

MK

Maxim Koltsov in Haskell
drop?
источник

MK

Maxim Koltsov in Haskell
Он бесплатно делает новый BS который смотрит на кусок старой памяти
источник

aK

anton K in Haskell
можно поискать Conal Elliott этим занимался, ещё есть такая сттаья на эту тему: https://research.chalmers.se/publication/505007/file/505007_Fulltext.pdf
источник

MK

Michael Korobkov in Haskell
Спасибо, чекну.
источник

aK

anton K in Haskell
но Конал пишет, что занимался, но коркрентых либ не публиковал(( похоже это приватный код
источник

JS

Jerzy Syrowiecki in Haskell
но это же не связанные вещи. bytestring ниоткуда не читает.

может быть, у вас ленивый IO, читающий из файла?
источник

aK

anton K in Haskell
в этой теме от него была интересная статья Compiling to categories но там тоже скорее описание концепта, если прямо сейчас хочется с этим что-то сделать, то это не будет практического интереса иметь
источник

¯

¯\_(ツ)_/¯ in Haskell
bytestring - это упрощённо набор байт. есть же ещё lazy bytestring. и я так написал, потому что не знаю, как они работают.

я подумал, что с помощью lazy bytestring можно абстрагироваться от файловой системы (хотя зачем? может, при передаче данных по сети можно более эффективно обрабатывать эти данные, однако ведь данные всё равно будут передаваться последовательно (т.е. не получится сделать fseek)) проблема в том, что файл может быть большим, но его не надо весь грузить в память, а только по мере надобности

(честно, у меня плохое представление по этом всем вещам, поэтому могу писать какую-то фигню)
источник

JS

Jerzy Syrowiecki in Haskell
Lazy.ByteString — это очень простой и местами вредный способ абстрагироваться от входящего потока байт. про файловую систему он ничего не знает.

но вы можете открыть файл, сделать fseek по нему, а потом с нужного места читать, через Lazy I/O или другим способом
источник

JS

Jerzy Syrowiecki in Haskell
может, лучше получить представление о лени, а потом прикладывать её к файлам?
источник

¯

¯\_(ツ)_/¯ in Haskell
да. получается, я хочу применить то, чего не понимаю. итог будет очевиден
источник

к

кана in Haskell
а можно пример вредности?
источник

JS

Jerzy Syrowiecki in Haskell
когда файл на носителе меняется в процессе чтения
источник

JS

Jerzy Syrowiecki in Haskell
1. System.IO.withBinaryFile "file" ReadMode
2. System.IO.hSeek
3. Data.ByteString.Lazy.hGet, hGetContents
источник

¯

¯\_(ツ)_/¯ in Haskell
а на маленьких файлах может быть такое, что лучше будет загружать весь файл полностью? тогда придётся иметь две реализации (правда, придётся получать срез, что довольно неэффективно)
источник

JS

Jerzy Syrowiecki in Haskell
а в чём проблема? маленькие файлы тоже можно читать по частям
источник

¯

¯\_(ツ)_/¯ in Haskell
можно, да, но может лучше из маленького файла читать данные сразу?
источник

к

кана in Haskell
я сейчас так посидел и подумал
источник

к

кана in Haskell
и действительно писать type-app с пробелом имеет смысл
источник