Схоже, що будь-який обмежений екземпляр повинен мати розумну реалізацію Enum. Я особисто не можу придумати контрприклад, хоча якщо хтось придумає той, який не є патологічним, то я зрозумію, чому це не так.
З того, що робити :iна двох класах типових класів, здається, єдиним винятком, який зараз є у стандартній бібліотеці, є кортежі, які є Bounded, але не Enums. Однак будь-який обмежений кортеж також повинен бути численним у розумному вигляді, просто збільшуючи останній елемент, а потім обертаючись, коли він дістається до maxBound.
Ця зміна, ймовірно, також передбачає додавання predBта nextBчимось подібне до Обмеженого для безпечного / циклічного способу проходу через значення Enum. У цьому випадку toEnum 0 :: (...)було б дорівнює(toEnum 0, toEnum 0, ...) :: (...)
Double/ Floatі всі подібні типи впроваджують Enumвсе одно, вони просто роблять succ = (+ 1)і fromEnum = truncate. Шлях Haskell насправді має сенс з точки зору практичності, оскільки в іншому випадку [0, 0,5 ..] і подібні не спрацювали, тому, схоже, Haskell не переживає про підрахунок, коли мова йде про Enums.