1.2: Generic Programming and Late-Definition of Data Types
Read this text, which discusses the basics of generic programming and relates it to different languages.
As with all efforts to simplify programming so that systems of greater complexity can be more easily created, there are issues to consider.