[...]
intersections :: Ord a => NonEmpty (Set a) -> Set a
intersections (s :| ss) = Foldable.foldl' intersection s ss
[...]
Why NonEmpty? I would expect "intersections [] = Set.empty", because the result contains all the elements which are in all sets, i.e. none. That's at least my intuition, is there some law which this would violate?