Tomasz Zielonka <[EMAIL PROTECTED]> writes: >> Thank you. It works for me too, but I don't understand why and how ;-)) >> Could you explain?
I'm a bit puzzled by this discussion, as strictness of FiniteMaps have rarely been (perceived to be?) a problem for me. > Scott's solution forces (lookupFM a' x) to head normal form (or is it > weak head normal form). This means that the value of type (Maybe v) is > evaluated as much that it is known whether it is Nothing, Just _ or _|_ > (bottom). This is probably enough to evaluate the path from FiniteMap's > tree root to x. If you insert a value into a FiniteMap, isn't the key necessarily evaluated anyway? Or is the problem that you can get a long chain of unevaluated 'addToFM's? The trick would then be to evaluate the FM now and then (e.g. using a strict fold). > However (lookupFM a' x) in head normal form can be still > something like this: > Just <unevaluated: 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1> I thought simply forcing evaluation of the value before inserting would do it (i.e. something like v `seq` addToFm fm k v (modulo v needing deeper seq'ing, that is) Am I missing something? -kzm -- If I haven't seen further, it is by standing in the footprints of giants _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe