Johannes Waldmann <joe@informatik.uni-leipzig.de> writes:
x :: Foo <- [ .. ]
A related point: the Haskell definition states that For any type that is an instance of class Bounded as well as Enum, the following should hold:
enumFrom and enumFromThen should be defined with an implicit bound, thus: enumFrom x = enumFromTo x maxBound
I think this should be enforced - the *only* method in Enum should be `enumFromTo'.
If one writes [ x .. ], then the compiler expands this to `enumFromTo x maxBound', and therefore adds a `Bounded' constraint. Likewise, [ .. y ] expands to `enumFromTo minBound y',
No, "half" infinite list like [1..] are useful.
and [ .. ] to `enumFromTo minBound maxBound' .
This I would not mind, I can not think of another reasonable translation. But why not define elements :: (Enum a, Bounded a) => [a] elements = [minBound .. maxBound] instead?
PS: and enumFromThenTo should just be removed, alongside n+k patterns :-)
Or preferably the Floating and Double Enum instances... Feri.