Wygląda na to, że każda instancja Bounded powinna mieć rozsądną implementację Enum. Nie mogę osobiście wymyślić kontrprzykładu, chociaż jeśli ktoś wymyśli taki, który nie jest patologiczny, zrozumiem, dlaczego tak nie jest.
Z robienia :ina dwóch typach klas wydaje się, że jedynym wyjątkiem obecnie w standardowej bibliotece są krotki, które są ograniczone, ale nie wyliczają. Jednak każda krotka Bounded musi być również wyliczalna w rozsądny sposób, po prostu zwiększając ostatni element, a następnie zawijając, gdy dojdzie do maxBound.
Ta zmiana prawdopodobnie wymagałaby również dodania predBi / nextBlub czegoś takiego do Bounded w celu bezpiecznego / zapętlonego sposobu przechodzenia przez wartości Enum. W takim przypadku toEnum 0 :: (...)byłoby równe(toEnum 0, toEnum 0, ...) :: (...)
Double/ Floati wszystkie podobne typy i Enumtak implementują , po prostu tworzą succ = (+ 1)i fromEnum = truncate. Sposób Haskella ma sens z praktycznego punktu widzenia, ponieważ w przeciwnym razie [0, 0,5 ..] i podobne nie działałyby, więc wydaje się, że Haskell nie martwi się o policzalność, jeśli chodzi o Enums.