Generic types in Scala allow for abstractions that cover different, potentially unrelated, types. A good example is the List type in Scala. If it weren't for generics, we'd have two main options for implementing lists:
1. Create a different List type for each type of elements