Ian,
you made this change to UniqFM:
Sat Feb 2 21:35:42 GMT Standard Time 2008 Ian Lynagh <[EMAIL PROTECTED]>
* Tweak strictness
hunk ./compiler/utils/UniqFM.lhs 701
- | j ==# i = mkLeafUFM j (f old new)
+ | j ==# i = mkLeafUFM j $! f old new
This gives UniqFM a very odd behaviour: it becomes strict in the *range*
(element type) when, but only when, you insert a second element with the same
key as an existing one.
It turned out that a change I was making tickled this behaviour, and it took me
ages to find.
I could just about imagine that making UniqFM *always* strict in its elements
might make sense. At least it would be consistent. The one place I know we'd
have to fix (by adding an extra Lift) is in the forkM in LoadIface.loadDecl.
But otherwise it'd probably be ok.
But the current situation is inconsistent, and very subtly so. Why did you make
this change? Did you consider making LeafUFM strict instead? Perhaps you
tried that and backed off into an ad-hoc solution?
Simon
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc