This is intended. If a method accepts keyword arguments and if its last argument is a hash object, it is considered for keyword arguments. If you want to pass a hash as the first parameter, you need to explicitly pass a hash for keyword arguments, i.e., funny({k: 1}, {}).