Ich habe wahrscheinlich nur einen Tag der Rechenzeit vergeblich verbringen :)Gibt es eine Möglichkeit, "träge" zu lesen?
Das Problem ist, dass ich (naiv) schrieb über 3,5 GB von (komprimiert) [(Text, HashMap Text Int)]
Daten in eine Datei und an diesem Punkt meines Programm abgestürzt ist. Natürlich gibt es kein finales ]
am Ende der Daten und die schiere Größe macht es unmöglich, es von Hand zu bearbeiten.
Die Daten wurden über Prelude.show
formatiert und genau an diesem Punkt merke ich, dass Prelude.read
den gesamten Datensatz in den Speicher (unmöglich) bevor alle Daten zurückgegeben werden müssen.
Jetzt ... gibt es eine Möglichkeit, die Daten wiederherzustellen, ohne einen Parser manuell schreiben zu müssen?
aktualisieren 1
main = do
s <- getContents
let hs = read s :: [(String, M.Map String Integer)]
print $ head hs
Das habe ich versucht ... aber es hält nur einem höheren Speicherbedarf, bis sie vom OS getötet wird.
@ n.m. selbst dann würde "lesen" versuchen, alles in den Speicher zu schreiben, bevor ein einzelnes Element der Liste zurückgegeben wird. – fho
Sorry ich missverstanden, Sie meinen Haskell 'lesen' Funktion, nicht aus der Datei lesen. –