Depends what you mean by &quot;static&#x2F;dynamic dispatch&quot;. Strictly speaking, the only example of static dispatch is when the called function is known at compile time. Dynamic dispatch allows selection of the function being called at runtime; either via inheritance (the called method depends on the exact subclass of the object), or via typeclasses (the called method depends on the typeclass passed along with the values - e.g. the <i>addition</i> typeclass will be different for a list of ints and a list of matrices).