Parse maps correctly

The order of evaluation of function arguments is implementation-defined,
so we must first put the keys and values in variables.