Sto leggendo un flusso di dati di grandi dimensioni utilizzando i lazy bytestrings e voglio sapere se sono disponibili almeno X byte in più durante l'analisi. Cioè, voglio sapere se il bytestring è lungo almeno X byte.In Haskell, la durata della chiamata su Lazy ByteString forza l'intera stringa in memoria?
Chiamando lo length
su di esso, l'intero flusso verrà caricato, quindi vanificando lo scopo di utilizzare il test automatico pigro?
In caso affermativo, il followup potrebbe essere: come sapere se ha almeno X byte senza caricare l'intero flusso?
MODIFICA: Inizialmente l'ho chiesto nel contesto della lettura dei file, ma ho capito che esistono modi migliori per determinare il file. La soluzione definitiva che mi serve, tuttavia, non dovrebbe dipendere dalla pigra fonte del test.
Grazie. Quindi la risposta è sì, usando la lunghezza si caricherà l'intera stringa in memoria? – me2
Sì, la lunghezza imporrà l'intera lista e "carica: it. Quindi, la contromisura in forma di" take " – ADEpt
Quindi, per essere chiari capiamo tutti, sì la lunghezza forzerà la stringa in memoria, quindi se chiami prendi x per prima cosa, almeno, stai forzando la memoria dei primi x byte. – MtnViewMark