각 인자가 서로 다른 메서드의 조건을 만족한다면, f(2, 3)에는 어떤 수치 계산 규칙을 적용해야 할까요?
가상의 Julia API에 f(x::Integer, y::Number)와 f(x::Number, y::Integer)가 있다고 해 볼게요. 첫 번째는 첫 인자가 정수일 때 쓰도록 고른 알고리즘이고, 두 번째는 두 번째 인자가 정수일 때 쓰도록 고른 알고리즘이에요. f(2, 3.0)과 f(2.0, 3)은 두 경우를 나눠 주지만, 두 인자가 모두 정수이면 두 메서드의 교집합에 들어가요. 어느 시그니처도 두 인자 전체를 놓고 더 구체적이지 않아서 이 호출은 모호해져요.
명시적인 f(x::Integer, y::Integer) 메서드로 겹침을 해소할 수는 있어요. 그런데 이 메서드는 수학적으로 어떤 동작을 해야 할까요? 정수 쌍을 별도 경우로 다룰까요, 아니면 기존 알고리즘 하나를 의도적으로 선택할까요? 디스패치를 정리하다 보니 원래 두 메서드가 답하지 않았던 설계 문제가 드러나네요.