map in terms of reverse(foldl)

we're almost to a point where if we optimize foldl, it should cascade through most other functions