[Haskell-cafe] How to deal with huge text file?

Magicloud Magiclouds magicloud.magiclouds at gmail.com
Mon May 24 22:20:45 EDT 2010


This is the function. The problem sure seems like something was
preserved unexpected. But I cannot find out where is the problem.

seperateOutput file =
  let content = lines file
      indexOfEachOutput_ = fst $ unzip $ filter (\(i, l) ->
                                                 " Log for " `isPrefixOf` l
                                               ) $ zip [0..] content
      indexOfEachOutput = indexOfEachOutput_ ++ [length content] in
  map (\(a, b) ->
         drop a $ take b content
      ) $ zip indexOfEachOutput $ tail indexOfEachOutput

On Tue, May 25, 2010 at 10:12 AM, Ivan Miljenovic
<ivan.miljenovic at gmail.com> wrote:
> On 25 May 2010 12:02, Magicloud Magiclouds
> <magicloud.magiclouds at gmail.com> wrote:
>> U is for UTF8 module. And I will try the modules you mentioned.
>> Although I thought Haskell IO is lazy enough....
>
> If you're only streaming data, it probably would be.  However, you
> seem to keep some of it in memory, which is what the problem is.  You
> might be able to fix this by doing "main = readFile filename >>= liftM
> separateOutput >>= mapM_ foo".  However, it depends on what
> separateOutput does.
>
> Also, consider using when (from Control.Monad) instead of your if statement.
>
> --
> Ivan Lazar Miljenovic
> Ivan.Miljenovic at gmail.com
> IvanMiljenovic.wordpress.com
>



-- 
竹密岂妨流水过
山高哪阻野云飞


More information about the Haskell-Cafe mailing list