Skip to content

Proposal: Add strict versions of foldlWithKey and insertLookupWithKey to Data.Map

This proposal depends on #4277 (closed).

The current Data.Map API lacks two important functions:

  • A strict left (pre-order) fold -- needed to e.g. sum all the values in a map efficiently.
  • A strict insertLookupWithKey' -- needed to e.g. update an integer counter and retrieve the previous value in a single traversal.

The benchmark we ran indicates that foldlWithKey' is 95% faster than its lazy counter part. insertLookupWithKey' is only 6% faster, but the speedup is highly dependent on how many times each element is update. Each element was only updated once in our benchmark so real speedups should be larger.

The consideration period is 3 weeks.

Note that the attached patch includes the dependent patches in the above linked ticket.

Trac metadata
Trac field Value
Version 6.12.3
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component libraries (other)
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information