Instant Generics (IG) is an approach to datatype-generic programming in Haskell based on type classes and type families. Datatype-generic functions operate on entire families of datatypes in a non-parametric, but uniform manner, guided by the type structure of consumed and produced data structures.