Seol mar théacs é seo: Patterns in Datatype−Generic Programming