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

Reply via email to