<div dir="ltr">yeah, that pushes it to a hard -1 for me.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Sep 13, 2019 at 9:33 AM Elliot Cameron <<a href="mailto:eacameron@gmail.com">eacameron@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"><span style="font-family:sans-serif;font-size:12.8px">> It's not only about top-level functions named 'on'. If I use 'on' as a local</span><span style="font-family:sans-serif;font-size:12.8px"> variable, then I get warnings about local redefinitions of the global</span><span style="font-family:sans-serif;font-size:12.8px"> Prelude.on.</span><div dir="auto"><span style="font-family:sans-serif;font-size:12.8px"><br></span></div><div dir="auto"><span style="font-family:sans-serif;font-size:12.8px">Oh heavens how did we not think of this point immediately? This frankly has me terrified of this proposal. This is such a cute name it's hard to imagine that it's not a local binding in numerous, invisible places.</span></div><div dir="auto"><span style="font-family:sans-serif;font-size:12.8px"><br></span></div><div dir="auto"><span style="font-family:sans-serif;font-size:12.8px">(Just last week I had to fix a package not on Hackage because it locally defined (<>)...)</span></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Sep 13, 2019, 7:54 AM Henning Thielemann <<a href="mailto:lemming@henning-thielemann.de" target="_blank">lemming@henning-thielemann.de</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"><br>
On Tue, 10 Sep 2019, David Feuer wrote:<br>
<br>
> Every time I reach for Data.Function.on, I feel like a total dolt for having to import a module to get a function<br>
> whose implementation is barely longer than the import. And it's a really good function too! Can we please add it<br>
> to the Prelude?<br>
>   on :: (b -> b -> c) -> (a -> b) -> a -> a -> c<br>
>   (.*.) `on` f = \x y -> f x .*. f y<br>
<br>
Most of the time I would use this I can use the more specific 'equating' <br>
and 'comparing'.<br>
<br>
I remember there was a lengthy discussion about the right name of 'on' and <br>
adding it to Data.Function. I had no need for that function because at <br>
this point I already had:<br>
    <a href="https://hackage.haskell.org/package/utility-ht-0.0.14/docs/Data-Function-HT.html#v:compose2" rel="noreferrer noreferrer" target="_blank">https://hackage.haskell.org/package/utility-ht-0.0.14/docs/Data-Function-HT.html#v:compose2</a><br>
<br>
If I am right the short name 'on' was only adopted because it was not <br>
(automatically) exported by Prelude._______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" rel="noreferrer" target="_blank">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>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div>