A generic could be seen as a pure (in the functional sense) program that is run at link time that takes various type information as input and outputs an implementation.