Correct behaviour of Bounded (Down a)

Kim-Ee Yeoh ky3 at atamo.com
Sat Sep 19 01:00:00 UTC 2020


On Sat, Sep 19, 2020 at 1:34 AM Asad Saeeduddin <masaeedu at gmail.com> wrote:

> This is something I've never understood about `Enum`. How can a
>
> type be in bijection with the integers, but simultaneously have a
>
> minimum and maximum bound?
>

It's not a bijection with the integers.

In the method fromEnum :: a -> Int, the Int stands in for the disjoint sum
of all possible types with an Enum instance.

And the way Int finesses that impersonation is by conflating together the
parts of the disjoint sum.


>
>
>
>
> On 9/18/20 10:40 AM, Oleg Grenrus
>
> wrote:
>
>
>
>
>
>
>
>
> Is it (a bug)?
>
>
>
>
>
> What about [minBound .. maxBound]. If you change `Bounded`, you
>
> need to change `Enum` too.
>
>
>
>
>
> From
>
> https://hackage.haskell.org/package/base-4.14.0.0/docs/GHC-Enum.html#t:Enum
>
>
>
>
>
> - The calls succ maxBound and pred minBound should result in a
>
> runtime error.
>
>
> - enumFrom and enumFromThen should be defined with an implicit
>
> bound
>
>
> The `min` and `max` in `minBound/maxBound` are related to
>
> `succ`, `pred`, not to `compare`. If you argue against, then we
>
> should add `Ord` super-class to `Enum` (and `Bounded`).
>
>
>
>
> - Oleg
>
>
>
>
> On 18.9.2020 16.54, Carter Schonwald
>
> wrote:
>
>
>
>
>
>
>
>
> Def a bug! Plz at myself and the core libraries
>
> handle for code review plz.
>
>
>
>
>
>
>
> This sounds kinda related to an MR that has
>
> languished too long regarding the behavior of Down on Ord1,
>
> which I think is related??? (I tried to arbitrate / layout
>
> possible answers for the related issue in the associated mr,
>
> but none of the clc members have engaged in the design space
>
> challenge)
>
>
>
>
>
>
>
> On Fri, Sep 18, 2020 at
>
> 7:44 AM David Beacham <mail at dbeacham.co.uk>
>
> wrote:
>
>
>
>
>
>>
>>
>>
>> Hi all,
>>
>>
>>
>>
>>
>>
>>
>> The current instance for `Bounded a => Bounded
>>
>> (Down a)` derives the `minBound` and `maxBound`
>>
>> exactly as they are for the underlying type `a` where
>>
>> I think they should be flipped to respect the flipped
>>
>> ordering of `Down a`?
>>
>>
>>
>>
>>
>>
>>
>> I have a feeling this has been come up in some
>>
>> other context/list before but I couldn't find a
>>
>> reference to it when searching - so sorry if this is a
>>
>> duplicate.
>>
>>
>>
>>
>>
>>
>>
>> I've got a corresponding MR here:
>> https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4081
>>
>>
>>
>>
>>
>>
>>
>> Thanks, David.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>>
>>
>>
>>
>>
>> Libraries mailing list
>>
>>
>>
>>
>>
>> Libraries at haskell.org
>>
>>
>>
>>
>>
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>
>>
>>
>>
>>
>>
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
>
> Libraries mailing list
>
> Libraries at haskell.org
>
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
>
> Libraries mailing list
>
> Libraries at haskell.org
>
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
>
>
>
>
>
>
>
>
> _______________________________________________
>
> Libraries mailing list
>
> Libraries at haskell.org
>
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
> --
-- Kim-Ee
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20200919/f553aa2c/attachment.html>


More information about the Libraries mailing list