Scala: rozumienie polimorfizmu parametrycznego

Jaka jest różnica pomiędzy

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

i

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

pod warunkiem, że użycie wygląda podobnie

drop1(List(1,2,3))

?

Kiedy należy użyć jednego lub drugiego i dlaczego? Podczas gdy rozumiem drugi przykład, tak naprawdę nie rozumiem celu pierwszego.

questionAnswers(4)

yourAnswerToTheQuestion