Sounds like a good idea, could it be possible to use a typeclass instead of `NonEmpty (Set a)`? I recall needing this a few times, but not over a NonEmpty. De: Libraries <libraries-bounces@haskell.org> em nome de Reed Mullanix <reedmullanix@gmail.com> Enviado: Sunday, December 6, 2020 6:20:02 AM Para: Haskell Libraries <libraries@haskell.org> Assunto: containers: intersections for Set, along with Semigroup newtype Hey all, I've found myself reaching for the following function a couple of times now, so I figured it might make a good addition. intersections :: Ord a => NonEmpty (Set a) -> Set a intersections (s :| ss) = Foldable.foldl' intersection s ss In a similar vein, we may as well add the following newtype + instance combo: newtype Intersection a = Intersection { getIntersection :: Set a } instance (Ord a) => Semigroup (Intersection a) where (Intersection a) <> (Intersection b) = Intersection $ intersection a b stimes = stimesIdempotent Would love to hear everyone's thoughts on this! Thanks Reed Mullanix