I'm not sure why you don't just use curry directly here. Also, why not just implement toAscList like in the rule and INLINE it?
I concede that using curry directly is the better approach, but when I implement toAscList as in the rule and inline it, it doesn't actually appear to get inlined. (Example: mapKeysWith, which is defined as fromListWith c . List.map fFirst . toList, doesn't actually fold/build with the map.)