<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>