<div dir="auto"><div>That's ... surprising. I'm quite curious what exactly you tried. Did you compile with optimizations? I see that in the Hackage version, foldMapA is defined in a where clause of a recursive function. I wouldn't be surprised if that could cause some trouble, especially if optimizations are disabled. Side note: I doubt you're actually winning anything significant by having a special case for [].<br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, May 9, 2019, 2:56 PM Vanessa McHale <<a href="mailto:vanessa.mchale@iohk.io">vanessa.mchale@iohk.io</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<p>Interestingly, in the case of dir-traverse, <br>
<br>
foldMapA = (fmap fold .) . traverse<br>
<br>
ends up being faster than<br>
<br>
foldMapA f = getAp . foldMap (Ap . f)<br>
<br>
...which I did not expect. I suppose we should benchmark this
before adding it to base.<br>
<br>
Cheers,<br>
Vanessa McHale<br>
</p>
<div class="m_-1181850699244910608moz-cite-prefix">On 5/9/19 12:49 PM, chessai . wrote:<br>
</div>
<blockquote type="cite">
<div dir="auto">I've also defined this in multiple of my own
projects/codebases, and I provided it as a motivation for
introducing Data.Monoid.Ap in the first place.
<div dir="auto"><br>
</div>
<div dir="auto">I'm +1 on the inclusion of foldMapA.</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Thu, May 9, 2019, 11:10 AM
Matt <<a href="mailto:parsonsmatt@gmail.com" target="_blank" rel="noreferrer">parsonsmatt@gmail.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">I've personally defined `foldMapA` in at least
three private projects, and I've one-off written it probably
over a dozen times. Each time I've used something like `fmap
k . traverse f` where `k` is one of `mconcat`, `fold`,
`join`, etc. I appreciate the subtle discussion on the
implementation for performance and I think it'd be awesome
to have this defined in `base`.<br clear="all">
<div>
<div dir="ltr" class="m_-1181850699244910608m_-8112066746636068220gmail_signature" data-smartmail="gmail_signature">
<div dir="ltr">
<div><br>
</div>
<div>Matt Parsons</div>
</div>
</div>
</div>
<br>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Tue, May 7, 2019 at
10:36 PM David Feuer <<a href="mailto:david.feuer@gmail.com" rel="noreferrer noreferrer" target="_blank">david.feuer@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="auto">
<div>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Wed, May 8,
2019, 12:12 AM Bryan Richter <<a href="mailto:b@chreekat.net" rel="noreferrer noreferrer" target="_blank">b@chreekat.net</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="auto">
<div>Hi David,</div>
<div dir="auto"><br>
</div>
<div dir="auto">At the risk of invoking the gods
of Language Blorp, I will note that as a
working programmer I know exactly what
Applicative, Traversable, and Monoid are (from
Vanessa's original proposal), but the
unfortunately-named getAp is something I will
only learn about begrudgingly.</div>
</div>
</blockquote>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">That seems unfortunate. Learning to use
such types is pretty useful. I'd recommend that every
Haskell programmer get to know all the types in
Data.Monoid and come to an understanding of what
they're good for.</div>
<div dir="auto"><br>
</div>
<div dir="auto">
<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="auto">
<div dir="auto"><br>
</div>
<div dir="auto">What you consider "so simple we
don't need to define it" took a rather lengthy
email to describe. Are you sure it's not worth
actually defining?</div>
</div>
</blockquote>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">So ... that long post was about trying
to prove what I intuitively thought *must* be true. In
the end, I wasn't quite able to finish the proof, but
I did at least manage to convince myself that my
intuition was correct. It's true that this sort of
intuition takes a certain amount of time to develop.
In the case of a really important operation, yeah, we
should package it up. But is this operation important
enough? I'm not really convinced yet.</div>
<div dir="auto"><br>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">
<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="auto">
<div dir="auto"> If nothing else, the next time
someone searches Hoogle for a function
matching its type signature, perhaps it will
be an opportunity for someone like me to peer
beneath the hood and learn something new.</div>
</div>
</blockquote>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">That's valid. But ... there are lots of
opportunities for that sort of thing already. Is it
worth the API clutter to add another one?</div>
</div>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" rel="noreferrer noreferrer" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote>
</div>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" rel="noreferrer noreferrer" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote>
</div>
<br>
<fieldset class="m_-1181850699244910608mimeAttachmentHeader"></fieldset>
<pre class="m_-1181850699244910608moz-quote-pre">_______________________________________________
Libraries mailing list
<a class="m_-1181850699244910608moz-txt-link-abbreviated" href="mailto:Libraries@haskell.org" target="_blank" rel="noreferrer">Libraries@haskell.org</a>
<a class="m_-1181850699244910608moz-txt-link-freetext" href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" target="_blank" rel="noreferrer">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a>
</pre>
</blockquote>
</div>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank" rel="noreferrer">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div></div></div>