Какое численное правило должно задавать смысл f(2, 3), если каждый аргумент подходит под условие отдельного метода?
В гипотетическом API на Julia определены f(x::Integer, y::Number) и f(x::Number, y::Integer). Первый использует алгоритм, выбранный для целого первого аргумента. Второй использует алгоритм для целого второго аргумента. Вызовы вроде f(2, 3.0) и f(2.0, 3) разделяют эти случаи, но два целых аргумента попадают в их пересечение. Ни одна сигнатура не является более конкретной по обоим аргументам, поэтому такой вызов неоднозначен.
Явный метод f(x::Integer, y::Integer) может устранить пересечение. Но каким должно быть его математическое поведение? Выделить пары целых в отдельный случай или намеренно выбрать один из существующих алгоритмов? Устранение неоднозначности обнаруживает решение, которое исходные два метода оставили открытым.