On Wed, Apr 13, 2005 at 11:35:42AM +0100, Simon Marlow wrote:
> It's because unsafeRangeSize is supposed to have the same meaning as
> rangeSize.  If someone defines an instance of Ix and overrides
> rangeSize, then unsafeRangeSize should continue to behave like rangeSize
> (remember, unsafeRangeSize isn't part of the exposed interface of
> Data.Ix, so clients of that interface can only define rangeSize).

The specification of rangeSize (Report + Erratum):

        map index (range (l,u)) == [0..rangeSize (l,u) - 1]

constrains it (and unsafeRangeSize) fairly closely.  The text seems to
imply that l and u are the first and last elements of range (l,u), i.e.

        index (l,u) l == 0
        index (l,u) u == rangeSize (l,u) - 1

which would make the default definition correct, and seems to imply that
it doesn't need to be a member function.
_______________________________________________
Cvs-libraries mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to