[Haskell-cafe] hash of a lazy bytestring?

Tom Schrijvers Tom.Schrijvers at cs.kuleuven.be
Sun May 13 12:52:20 EDT 2007


On Sun, 13 May 2007, David Roundy wrote:

> I was just contemplating hashes, and it occurred to me that it would be
> nice to be able to compute the hash of a lazily constructed bytestring and
> lazily consume its output without requiring the whole string to ever be in
> memory.  Or in general, it'd be nice to be able to perform two simultaneous
> consumptions of a lazy list without requiring that the entire list be
> stored.

How about reading the same file twice?

 	do l1 <- readFile "foo"
            l2 <- readFile "foo"
 	   let len = length l1
            writeFile "bar" l2
 	   ...
Another solution would be loop fusion:

 	do l <- readFile "foo"
 	   len <- writeFileAndComputeLength "bar" l
 	   ...

A compiler might be able to do that for you.

Tom

--
Tom Schrijvers

Department of Computer Science
K.U. Leuven
Celestijnenlaan 200A
B-3001 Heverlee
Belgium

tel: +32 16 327544
e-mail: tom.schrijvers at cs.kuleuven.be


More information about the Haskell-Cafe mailing list