Recently we stumbled on a problem that at first glance looks particularly simple: overload a method for a `List[String]` and a `List[Int]`. One could expect that simply writing
def foo(ls: List[String]): Unit = ???
def foo(ls: List[Int]): Unit = ???
would do the trick, the same way as we would do
def foo(s: String): Unit = ???
def foo(j: Int): Unit = ???
As much as the latter will work like a charm, the former will gratify you with the following compile-time error: