Incidentally, I find it somewhat puzzling that multiple dispatch was/is not used more widely.
Historically, AFAIK the concept was invented in the 1980s in Common Lisp — the fact that you could just add it to the language shows how powerful Lisp is. But after that, for decades it only shows up in niche languages (Dylan is probably the most well-known of these), or people try to add it to mainstream languages and more or less fail to gain traction for the idea.
Then, after a long winter, Julia is designed with multiple dispatch baked in, combined with a powerful parametric type system.
What happened in the meantime? How was the concept practically forgotten? I can’t explain this rationally.