"매 same interface, 매 different behavior". Polymorphism은 매 하나의 symbol/call-site가 매 runtime 또는 compile-time에 매 여러 type에 대해 매 적절히 dispatch되는 매 type-system property. 매 1967 Strachey 분류 (parametric / ad-hoc) 이후 매 OOP / functional / trait-based 모든 paradigm의 매 backbone.
매 핵심
매 4가지 form
매 Subtype (inclusion): 매 Animal a = new Dog() — 매 Liskov Substitution.
매 Parametric (generic): 매 List<T>, 매 fn id<T>(x: T) -> T.
매 Ad-hoc (overloading): 매 f(int) vs 매 f(string) — 매 compile-time dispatch.
매 Coercion: 매 int → float 매 implicit conversion.
매 Dispatch 축
Single dispatch: 매 receiver type 하나로 결정 (Java, Python).
Multiple dispatch: 매 모든 argument type으로 결정 (Julia, CLOS).
Static: 매 compile-time (templates, traits with monomorphization).