I have to admit I'm not a huge fan of these functions. The major objections that come to mind:
* They can't be made to pass the Traversable/Traversal laws and can't be implemented much more efficiently than the naive 'dump it out to a list and read it back in' approach, so baking them into the library doesn't add much
* The names are dreadfully confusing next to combinators likeĀ traverseWithKey that do pass the laws.
* If you use fromDistinctAscList you'll get much of the benefit of the monotonic walk you're doing now. Moreover fromList basically gets almost the same performance as fromDistinctAscList these days. Did you benchmark to see how much the custom traversal helps?
Between those concerns I'm currently -1 on adding these.
-Edward