[Haskell-cafe] More idiomatic use of strictness

Don Stewart dons at galois.com
Thu Jul 10 14:03:51 EDT 2008


jonathanccast:
> On Thu, 2008-07-10 at 03:16 -0700, Grzegorz Chrupala wrote:
> > Hi all,
> > 
> > Is there a less ugly way of avoiding laziness in the code pasted below then
> > the use of seq in the last line?
> > The program is supposed to split a large input file into chunks and check in
> > how many of those chunks each of a list of words appear, as well as the
> > total number of chunks. Without the seq it consumes huge amounts of memory.
> 
> Strategies!  Try
> 
> ((,) $| rnf) dfs' (n + 1)
> 
> Or
> 
> (id $| seqPair rnf r0) (dfs', n + 1)
> 
> But I don't know if that falls within the intended meaning of `less
> ugly'.

I'd use a strict pair and the rnf strategy.

    data P = P [Something] !Int

    rnf dfs' (P dfs' (n+1)


More information about the Haskell-Cafe mailing list