2009/06/24 Daniel Fischer <[email protected]>:
> Am Mittwoch 24 Juni 2009 18:50:49 schrieb Jason Dusek:
> > 2009/06/24 Ketil Malde <[email protected]>:
> > > So in effect, you have a zero-length underlying array, but
> > > the array implementation still keeps track of the real
> > > indices and tries to print some contents.  (Correct?)
> >
> > I don't quite understand your reasoning here.
>
> The 'length' of the array, as in 'number of elements' is
> calculated by multiplying the lengths in each dimension
>
> [...]
>
> I don't know if that's how it's implemented, but that's the
> reasoning leading to an array of size 0.

  That seems reasonable, actually. My system is nominally 64bit
  (it's MacIntel) but the kernel claims `i386` so there we are.

  It's too bad that indexes are `Int` instead of `Word` under
  the hood. Why is `Int` used in so many places where it is
  semantically wrong? Not just here but also in list indexing...
  Indices/offsets can only be positive and I can't see any good
  reason to waste half the address space -- yet we encounter
  this problem over and over again.

  This problem probably runs pretty deep. Just having a flexible
  "backing index type" is only part of the issue, since pointer
  indexing operations work with `Int` as well. If you wanted to
  hide all this stuff, you'd need to segment particularly large
  unboxed arrays...

--
Jason Dusek
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to