Let me elaborate a bit on why I agree with Seth. Since the function name (and therefore type) is a parameter for the map function, you do not now what type it will return until you now the value of this parameter. In the current, limited functionality system we do no the value at the "compile" time. To provide a uniform extensibility mechanism for these "higher" order functions, we may need to allow the value of each argument to be a parameter with a value determined at the runtime. In this case the functions that take this map output as an argument can not be verified to accept the correct data type in advance. In the case that the map type is declared and the function name is a runtime valued parameter - inappropriate name will result in an Indeterminate: a condition that we have a clear mechanism to deal with. For this reason - ALL XACML functions should have declared, not deduced, type.