Generic programming
A generic program is one that uses as little knowledge as possible about its surroundings
Different languages express generic programs differently
- Smalltalk uses generic typing
- C++ uses templates
- FP languages often support generic types