[Haskell-cafe] [m..n] question
Simon Richard Clarkstone
simon.clarkstone at gmail.com
Sun Sep 28 07:27:28 EDT 2008
Jonathan Cast wrote:
> On Sat, 2008-09-27 at 02:09 +0100, Simon Richard Clarkstone wrote:
>> Darn, I sent this as personal mail the first time.
>> Evan Laforge wrote:
>>>> In Haskell,
>>>> "The sequence enumFromTo e1 e3 is the list [e1,e1+1,e1+2,...e3].
>>>> The list is empty if e1 > e3."
>>> I like it, since it means that things like [n .. n + length m - 1]
>>> work as expected when m is . Or say 'map (array!) [bsearch x ..
>>> bsearch y - 1]'.
>>> Tangent: Of course, I would prefer the range be half-open, which is a
>>> pretty consistent standard in the rest of the world. I've had a
>>> number of off by one errors from this, and from Array.bounds. I guess
>>> it's too late to fix those, though, even if there were agreement that
>>> they need to be fixed.
>> It causes problems with types that have an upper bound. You can't
>> express Haskell's [False .. True] as a half-open range for example.
> [False .. ] works great, though, whether ranges are closed or half-open.
You get problems though if you want to tell a function about a range,
passing in a low and a high by some means, and it is expecting a
half-open range, but you want to tell it [False..]. For example,
creating a new array.
BTW, why isn't [..] the notation for the entirety of a Bounded type?
This mailing list is odd; thunderbird defaults to replying to sender
rather than to the whole list.
More information about the Haskell-Cafe