Scala: понимание параметрического полиморфизма

В чем разница между

def drop1[A](l: List[A]) = l.tail

а также

def drop1(l: List[Int]) = l.tail

при условии, что использование выглядит примерно так

drop1(List(1,2,3))

?

Когда один или другой должен использоваться и почему? В то время как я могу понять второй пример, я не совсем понимаю цель первого.

Ответы на вопрос(4)

Ваш ответ на вопрос