Correct behaviour of Bounded (Down a)

David Beacham mail at dbeacham.co.uk
Mon Sep 21 17:46:31 UTC 2020


I think that would be my preferred solution

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.



On Mon, Sep 21, 2020 at 6:21 PM David Feuer <david.feuer at gmail.com> wrote:

> That strikes me as quite reasonable.
>
> On Mon, Sep 21, 2020, 1:09 PM Krzysztof Gogolewski <
> krz.gogolewski at gmail.com> wrote:
>
>> I would consider removing Enum a => Enum (Down a), and fixing Bounded
>> (Down a).
>>
>> There isn't really a good equivalent of `enumFromThenTo` for Down and
>> performing negation in `toEnum` is not obvious to me.
>>
>> On Sat, Sep 19, 2020 at 3:00 AM Kim-Ee Yeoh <ky3 at atamo.com> wrote:
>> >
>> >
>> >
>> > 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
>> > _______________________________________________
>> > 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20200921/0857f050/attachment.html>


More information about the Libraries mailing list