Zdravím, mám konkrétní otázku, ale nejdřív motivace. Všichni mají plnou hubu keců o DRY, KISS, LSP apod., ale když přijde na rozumnou implementaci, jazyky jen hážou klacky od nohy. Čím dal víc mě vytáčí, že v jazycích jako Java, C# nebo C++ (nebo novějších jako Go) neexistuje analogie k typovým třídám, čímž je vývojář nucen k opakování (redundanci) kódu (což je velké fuj). Takže - jak řešíte generický ad hoc polymorfismus v OO jazyce bez typových tříd (beru OO obecně, předpokládají se rozhraní, dědičnost ne)? V Go to jde částečně přes typové aliasy, jen se pak vyžaduje explicitní přetypováváni, což zbytečně prodlužuje a znepřehledňuje kód. Swift by se mohl dostat blízko, až zavedou plánovaný operátor ~=, ale ten zas mimo macOS/iOS není moc schůdný (verze pro Linux zatím hapruje).
P.S. Dynamické jazyky tento problém nemají, proto jsou v kontextu této diskuze irelevantní.