<div dir="auto">I would pick the name clamp, it is quite common.  And I have often wished for this to be in base. </div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Aug 15, 2020, 02:24 Ivan Lazar Miljenovic <<a href="mailto:ivan.miljenovic@gmail.com">ivan.miljenovic@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"><div>At the risk of bikeshedding, I don't think "clamp" is a very descriptive/findable name for this.  What about "bounded"?</div><div><br></div><div>Otherwise, +1<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, 15 Aug 2020 at 13:40, David Feuer <<a href="mailto:david.feuer@gmail.com" target="_blank" rel="noreferrer">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">Strict. Making the function lazy to be extra efficient when given<br>
useless arguments means demand analysis will be worse for no good<br>
reason.<br>
<br>
On Fri, Aug 14, 2020 at 11:56 PM Carter Schonwald<br>
<<a href="mailto:carter.schonwald@gmail.com" target="_blank" rel="noreferrer">carter.schonwald@gmail.com</a>> wrote:<br>
><br>
> Wonderful! Your aside about inverted Lo and hi clamping arguments does raise a fun question about strictness for the value argument!  When  low and hi are equal, the result is constant. Should the value arg be strict or lazy when it’s essentially the constant function?<br>
><br>
> On Fri, Aug 14, 2020 at 11:30 PM Sandy Maguire <<a href="mailto:sandy@sandymaguire.me" target="_blank" rel="noreferrer">sandy@sandymaguire.me</a>> wrote:<br>
>><br>
>> Yay! I've opened !3876 at <a href="https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3876" rel="noreferrer noreferrer" target="_blank">https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3876</a><br>
>><br>
>> On Fri, Aug 14, 2020 at 5:45 PM Carter Schonwald <<a href="mailto:carter.schonwald@gmail.com" target="_blank" rel="noreferrer">carter.schonwald@gmail.com</a>> wrote:<br>
>>><br>
>>><br>
>>><br>
>>> hey sandy!<br>
>>> i absolutely support this,<br>
>>><br>
>>> theres one gotcha to this definition, handling nans!  I also think that this is version of the definition you propose may benefit from being written less point free (eg   =  \ val -> min high $ max low a) for clarity and for how ghc optimizes<br>
>>><br>
>>> theres several ways we could make it play nice with nans, but maybe this should go in as is, to force me to get irate about ord for floats and finish some long overdue patches to Ord on Float and double :)<br>
>>><br>
>>> either way, please throw a PR onto gitlab and @ myself and other folks for review<br>
>>><br>
>>><br>
>>><br>
>>> On Fri, Aug 14, 2020 at 5:38 PM Sandy Maguire <<a href="mailto:sandy@sandymaguire.me" target="_blank" rel="noreferrer">sandy@sandymaguire.me</a>> wrote:<br>
>>>><br>
>>>> Hi all,<br>
>>>><br>
>>>> It seems to me that base is missing the very standard function `clamp :: Ord a => a -> a -> a -> a`:<br>
>>>><br>
>>>> ```haskell<br>
>>>> clamp :: Ord a => a -> a -> a -> a<br>
>>>> clamp low high = min high .max low<br>
>>>> ```<br>
>>>><br>
>>>> I propose it be added to Data.Ord. It's useful, generic, and non-trivial to get right (the "big" number goes with "min" -- causes me cognitive dissonance every time.)<br>
>>>><br>
>>>> Thanks,<br>
>>>> Sandy<br>
>>>> _______________________________________________<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>
><br>
> _______________________________________________<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>
_______________________________________________<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><br clear="all"><br>-- <br><div dir="ltr">Ivan Lazar Miljenovic<br><a href="mailto:Ivan.Miljenovic@gmail.com" target="_blank" rel="noreferrer">Ivan.Miljenovic@gmail.com</a><br><a href="http://IvanMiljenovic.wordpress.com" target="_blank" rel="noreferrer">http://IvanMiljenovic.wordpress.com</a></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>