<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>Echoing Keith's point, "semi" to me means a weaker algebra; i.e.
a super-class. Foldable => Semifoldable is thus totally wrong,
"Semifoldable" is the sub-class. In particular. The Monoid and
Semigroup constraints on their respective methods further show
that the fold class hierarchy is *contravariant* with respect to
the binary operator class hierarchy. Putting semi-* with semi-*
only makes sense for something covariant (e.g. the if methods
*returned* `Dict (Semigroup a)` etc).<br>
</p>
<p>Semimonad and Semiapplicative are fine with me (I don't really
care, not worth fighting one way or the other) but strong -1 on
Semifoldable.</p>
John
<p>On 10/18/19 12:10 PM, Oleg Grenrus wrote:<br>
</p>
<blockquote type="cite"
cite="mid:d837a296-c29e-5374-ed8e-5a57625524ac@iki.fi">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<p>Please reply to the "Add Data.Foldable1 to base" -thread to
keep the discussion in one place.<br>
Otherwise this opinion will most likely be ignored.<br>
</p>
<p>- Oleg<br>
<br>
P.S. That said, foldMap1/semifoldMap/... can fold over *less*
things. It can fold over NonEmpty (list) but not over ordinary
[].<br>
</p>
<div class="moz-cite-prefix">On 18.10.2019 18.40, Keith wrote:<br>
</div>
<blockquote type="cite"
cite="mid:59031523-7353-4000-ABF5-B9BF68B0CF4B@gmail.com">
<meta http-equiv="content-type" content="text/html;
charset=UTF-8">
Sorry about bikeshedding. However, 'semifoldable' would be super
confusing.<br>
<br>
If somebody saw 'semifoldMap' in the wild what would they think?
Probably not that it can fold _more_ things than 'foldMap'.<br>
<br>
'NonemptyFoldable', 'Semigroup.Foldable', 'SemigroupFoldable',
and 'Foldable1', with 'sfoldMap', 'sgFoldMap',
'nonemptyFoldMap', or 'Semigroup.foldMap' may be long or
meaningless to most, but at least they aren't actively
misleading.<br>
<br>
–Keith<br>
<br>
<div class="gmail_quote">On October 18, 2019 2:13:51 PM UTC,
Oleg Grenrus <a class="moz-txt-link-rfc2396E"
href="mailto:oleg.grenrus@iki.fi" moz-do-not-send="true"><oleg.grenrus@iki.fi></a>
wrote:
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;">
<pre class="k9mail">Relating to Foldable1/NonEmptyFoldable, based in another discussion (in
my foldable1 to base proposal), it looks like it might be called
Semifoldable
See <a href="https://mail.haskell.org/pipermail/libraries/2019-October/030030.html" moz-do-not-send="true">https://mail.haskell.org/pipermail/libraries/2019-October/030030.html</a>
Yet, Semiset is different thing (based on wikipedia:
<a href="https://en.wikipedia.org/wiki/Semiset)." moz-do-not-send="true">https://en.wikipedia.org/wiki/Semiset).</a> NonEmptySet is a good name, it
doesn't need explanation. If someone feels that it's too long, they can
introduce `type NESet = NonEmptySet` alias in their development.
- Oleg
On 20.9.2019 4.56, Ruben Astudillo wrote:
<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;">On 19-09-19 22:17, Alexandre Esteves wrote:
<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;">I do like the sound of `instance Foldable1 Set1` more than I do
`instance NonEmptyFoldable NonEmptySet`
<<a href="https://hackage.haskell.org/package/semigroupoids-5.3.3/docs/Data-Semigroup-Foldable.html#t:Foldable1" moz-do-not-send="true">https://hackage.haskell.org/package/semigroupoids-5.3.3/docs/Data-Semigroup-Foldable.html#t:Foldable1</a>>
</blockquote> I prefer it too, I just wish (future) documentation included a little
explanation on why the suffix 1 was put.
</blockquote><hr>Libraries mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Libraries@haskell.org" moz-do-not-send="true">Libraries@haskell.org</a>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" moz-do-not-send="true">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a>
</pre>
</blockquote>
</div>
<br>
-- <br>
Sent from my phone with K-9 Mail. <br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
Libraries mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Libraries@haskell.org" moz-do-not-send="true">Libraries@haskell.org</a>
<a class="moz-txt-link-freetext" href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" moz-do-not-send="true">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a>
</pre>
</blockquote>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
Libraries mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Libraries@haskell.org">Libraries@haskell.org</a>
<a class="moz-txt-link-freetext" href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a>
</pre>
</blockquote>
</body>
</html>