Ad-Hoc Polymorphism and the Type Class Pattern in C#
Subtype polymorphism is not the only way to make an algorithm work across types. Sometimes you cannot change the types, do not want wrapper allocations, or need behavior selected by a generic constrai





