SMS dit: Patterns in Datatype−Generic Programming