Es scheint, dass jede Bounded-Instanz eine vernünftige Implementierung von Enum haben sollte. Ich kann mir kein Gegenbeispiel vorstellen, obwohl ich verstehen werde, warum dies nicht der Fall ist, wenn jemand eines findet, das nicht pathologisch ist.
Ausgehend :ivon den beiden Typklassen scheint die einzige Ausnahme, die derzeit in der Standardbibliothek enthalten ist, Tupel zu sein, die begrenzt, aber keine Aufzählungen sind. Jedes Bounded-Tupel muss jedoch auch auf vernünftige Weise aufzählbar sein, indem einfach das letzte Element inkrementiert und dann umbrochen wird, wenn es zu maxBound gelangt.
Diese Änderung würde wahrscheinlich auch das Hinzufügen predBund / nextBoder ähnliches zu Bounded beinhalten, um einen sicheren / schleifenförmigen Weg zum Durchlaufen der Enum-Werte zu finden. In diesem Fall toEnum 0 :: (...)wäre gleich(toEnum 0, toEnum 0, ...) :: (...)
Double/ Floatund alle ähnlichen Typen implementieren sie Enumtrotzdem, sie machen nur succ = (+ 1)und fromEnum = truncate. Haskells Weg ist aus praktischer Sicht tatsächlich sinnvoll, da sonst [0, 0,5 ..] und ähnliches nicht funktionieren würden. Haskell scheint sich also keine Sorgen um die Zählbarkeit zu machen, wenn es um Enums geht.