weaken map/e contract to admit non-bijective enumerations

and avoid signalling an error when mapping empty enumerations