<div dir="ltr"><div>It doesn't violate any laws per say, due to the general lawlessness of Foldable, but violates aesthetics. If we restrict it to NonEmpty then we get a lovely semigroup homomorphism!</div><div>If we loosen it to lists, then the identity element of the list monoid gets mapped to an absorbing element in the Set semigroup under intersection, which just feels... off.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Dec 6, 2020 at 10:50 AM Sven Panne <<a href="mailto:svenpanne@gmail.com">svenpanne@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">Am So., 6. Dez. 2020 um 07:20 Uhr schrieb Reed Mullanix <<a href="mailto:reedmullanix@gmail.com" target="_blank">reedmullanix@gmail.com</a>>:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>[...]</div><div>  intersections :: Ord a => NonEmpty (Set a) -> Set a<br>  intersections (s :| ss) = Foldable.foldl' intersection s ss</div><div>[...]</div></div></blockquote><div><br></div><div>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? </div></div></div>
</blockquote></div>