<div dir="ltr"><div>I think that would be my preferred solution<br></div><div><br></div><div>You can keep the numbering the same in the Enum instance if you wish and hide the negation in the implementation, but I'm not convince the Enum instance is of general use.<br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Sep 21, 2020 at 6:21 PM David Feuer <<a href="mailto:david.feuer@gmail.com">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">That strikes me as quite reasonable.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Sep 21, 2020, 1:09 PM Krzysztof Gogolewski <<a href="mailto:krz.gogolewski@gmail.com" target="_blank">krz.gogolewski@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">I would consider removing Enum a => Enum (Down a), and fixing Bounded (Down a).<br>
<br>
There isn't really a good equivalent of `enumFromThenTo` for Down and<br>
performing negation in `toEnum` is not obvious to me.<br>
<br>
On Sat, Sep 19, 2020 at 3:00 AM Kim-Ee Yeoh <<a href="mailto:ky3@atamo.com" rel="noreferrer" target="_blank">ky3@atamo.com</a>> wrote:<br>
><br>
><br>
><br>
> On Sat, Sep 19, 2020 at 1:34 AM Asad Saeeduddin <<a href="mailto:masaeedu@gmail.com" rel="noreferrer" target="_blank">masaeedu@gmail.com</a>> wrote:<br>
>><br>
>> This is something I've never understood about `Enum`. How can a<br>
>><br>
>> type be in bijection with the integers, but simultaneously have a<br>
>><br>
>> minimum and maximum bound?<br>
><br>
><br>
> It's not a bijection with the integers.<br>
><br>
> In the method fromEnum :: a -> Int, the Int stands in for the disjoint sum of all possible types with an Enum instance.<br>
><br>
> And the way Int finesses that impersonation is by conflating together the parts of the disjoint sum.<br>
><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> On 9/18/20 10:40 AM, Oleg Grenrus<br>
>><br>
>> wrote:<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> Is it (a bug)?<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> What about [minBound .. maxBound]. If you change `Bounded`, you<br>
>><br>
>> need to change `Enum` too.<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> From<br>
>><br>
>> <a href="https://hackage.haskell.org/package/base-4.14.0.0/docs/GHC-Enum.html#t:Enum" rel="noreferrer noreferrer" target="_blank">https://hackage.haskell.org/package/base-4.14.0.0/docs/GHC-Enum.html#t:Enum</a><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> - The calls succ maxBound and pred minBound should result in a<br>
>><br>
>> runtime error.<br>
>><br>
>><br>
>> - enumFrom and enumFromThen should be defined with an implicit<br>
>><br>
>> bound<br>
>><br>
>><br>
>><br>
>> The `min` and `max` in `minBound/maxBound` are related to<br>
>><br>
>> `succ`, `pred`, not to `compare`. If you argue against, then we<br>
>><br>
>> should add `Ord` super-class to `Enum` (and `Bounded`).<br>
>><br>
>><br>
>><br>
>><br>
>> - Oleg<br>
>><br>
>><br>
>><br>
>><br>
>> On 18.9.2020 16.54, Carter Schonwald<br>
>><br>
>> wrote:<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> Def a bug! Plz at myself and the core libraries<br>
>><br>
>> handle for code review plz.<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> This sounds kinda related to an MR that has<br>
>><br>
>> languished too long regarding the behavior of Down on Ord1,<br>
>><br>
>> which I think is related??? (I tried to arbitrate / layout<br>
>><br>
>> possible answers for the related issue in the associated mr,<br>
>><br>
>> but none of the clc members have engaged in the design space<br>
>><br>
>> challenge)<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> On Fri, Sep 18, 2020 at<br>
>><br>
>> 7:44 AM David Beacham <<a href="mailto:mail@dbeacham.co.uk" rel="noreferrer" target="_blank">mail@dbeacham.co.uk</a>><br>
>><br>
>> wrote:<br>
>><br>
>><br>
>><br>
>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> Hi all,<br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> The current instance for `Bounded a => Bounded<br>
>>><br>
>>> (Down a)` derives the `minBound` and `maxBound`<br>
>>><br>
>>> exactly as they are for the underlying type `a` where<br>
>>><br>
>>> I think they should be flipped to respect the flipped<br>
>>><br>
>>> ordering of `Down a`?<br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> I have a feeling this has been come up in some<br>
>>><br>
>>> other context/list before but I couldn't find a<br>
>>><br>
>>> reference to it when searching - so sorry if this is a<br>
>>><br>
>>> duplicate.<br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> I've got a corresponding MR here: <a href="https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4081" rel="noreferrer noreferrer" target="_blank">https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4081</a><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> Thanks, David.<br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> _______________________________________________<br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> Libraries mailing list<br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> <a href="mailto:Libraries@haskell.org" rel="noreferrer" target="_blank">Libraries@haskell.org</a><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><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>
>>><br>
>>><br>
>>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>><br>
>> Libraries mailing list<br>
>><br>
>> <a href="mailto:Libraries@haskell.org" rel="noreferrer" target="_blank">Libraries@haskell.org</a><br>
>><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>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>><br>
>> Libraries mailing list<br>
>><br>
>> <a href="mailto:Libraries@haskell.org" rel="noreferrer" target="_blank">Libraries@haskell.org</a><br>
>><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>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>><br>
>> Libraries mailing list<br>
>><br>
>> <a href="mailto:Libraries@haskell.org" rel="noreferrer" target="_blank">Libraries@haskell.org</a><br>
>><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>
> -- Kim-Ee<br>
> _______________________________________________<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>
_______________________________________________<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>