Abstract over keyword arguments
If two functions take similar keyword arguments, we have to write them out twice.
Since HMap syntax is very similar and keyword arguments often flow into HMap types, it would be great to just specify these as HMap types.
What does a union of HMap's mean?
What does nil mean?