[Haskell-cafe] Re: Processing of large files
ketil+haskell at ii.uib.no
Thu Nov 4 03:24:30 EST 2004
Tomasz Zielonka <t.zielonka at students.mimuw.edu.pl> 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?
If I haven't seen further, it is by standing in the footprints of giants
More information about the Haskell-Cafe