I believe that rnf from the Control.Parallel.Strategies library
shipped with GHC 6.6.1 is equivalent to deepSeq, as in:
x `deepSeq` y is equivalent to rnf x `seq` y
Isn't it?
/g
On 9/12/07, Peter Verswyvelen
Thanks for all the info.
It's really good news that code coverage is now part of the GHC compiler!
Any more info on that "deep seq"? I can't find it in the libraries that come with GHC 6.6.1. It seems to be part of Control.Strategies.DeepSeq of HXT. This is a separate download?
Intuitively, I would say "deep seq" forces strict evaluation of the complete "graph" of its first argument? Is this correct?
Peter
-----Original Message----- From: Don Stewart [mailto:dons@galois.com] Sent: Tuesday, September 11, 2007 10:11 PM To: Peter Verswyvelen Cc: Neil Mitchell; Haskell-Cafe Subject: Re: [Haskell-cafe] Building "production stable" software in Haskell
bf3:
Well, I actually meant more something like the imperative equivalences of "code coverage tools" and "unit testing tools", because I've read rumors that in Haskell, unit testing is more difficult because lazy evaluation will cause the "units" that got tested to be evaluated
We have full control over evaluation though, with bang patterns, seq and deep seq.
Generally unit testing is generalised to property testing with QuickCheck, though.
For code coverage, combined with testing, use HPC, the program coverage tool
now in GHC head.
-- Don
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- The man who'd introduced them didn't much like either of them, though he acted as if he did, anxious as he was to preserve good relations at all times. One never knew, after all, now did one now did one now did one.