From: Raffael Cavallaro on 5 Dec 2009 00:34 On 2009-12-04 23:44:30 -0500, Spiros Bousbouras <spibou(a)gmail.com> said: > Well things change. Memory and disks get bigger while the standard > stays the same. This is purely an implementation issue. When memory and disks get bigger, then implementations need to increase the size of fixnums. An implementation with small fixnums needs to change, not the standard. -- Raffael Cavallaro
From: Kaz Kylheku on 5 Dec 2009 00:42 On 2009-12-05, Spiros Bousbouras <spibou(a)gmail.com> wrote: > On 04 Dec 2009 10:01:06 -0800 > tar(a)sevak.isi.edu (Thomas A. Russ) wrote: >> Spiros Bousbouras <spibou(a)gmail.com> writes: >> >> > > > 2. Why the requirement that the dimensions of an array are fixnums ? >> > > >> > > Why not? This is not a big restriction, if an implementation wants >> > > bigger arrays, it only has to provide bigger fixnums. >> > >> > fixnums are supposed to be efficient , that's the criterion for >> > choosing the size of fixnums not the maximum size of arrays. >> >> Yes. And you want to make sure array access is efficient. Thus the >> limitation on only allowing fixnums as indicies > > No , you want to make sure that the programmer has the freedom to > choose the trade-off which is most appropriate for his application. If > he is willing to sacrifice some speed in order to gain larger arrays he > should have that choice. The trade off is there. You are perfectly free to ask your Lisp for an array biger than array-dimension-limit, and your implementation is free to provide it to you. In this case, you merely can't use the ANSI standard as a negotiation tool.
From: Raffael Cavallaro on 5 Dec 2009 00:45 On 2009-12-04 23:44:38 -0500, Spiros Bousbouras <spibou(a)gmail.com> said: > On the other hand it makes sense to expect that the maximum > array size would depend on the actual amount of physical RAM installed > in a computer so the standard is at fault for creating a connection > between fixnum size and array size. Again, this is an *implementation* issue, not an issue with the standard. Implementors are responsible for assuring that their fixnums are large enough to address arrays that are reasonable on the platform. The standard gives them the flexibility to do that, so any failure to provide fixnums large enough to address reasonable sized arrays on that platform is a failure of that specific implementation, not a flaw in ANSI common lisp. -- Raffael Cavallaro
From: Pascal J. Bourguignon on 5 Dec 2009 05:13 Spiros Bousbouras <spibou(a)gmail.com> writes: > I'm not sure what the "at a word level" part means but I believe I > understand your overall gist. So what about those lisp systems which > can't index their entire address space using their fixnums ? From what > Pillsy said CLisp probably can't. More probably you will implement a bigarray data abstraction using an array of arrays to store the data. Remember that ARRAY-TOTAL-SIZE-LIMIT may be as low as 1024, so if you want to write a portable program you will have to implement this bigarray abstraction anyway. -- __Pascal Bourguignon__
From: Barry Margolin on 5 Dec 2009 05:54
In article <OylSm.7781$6p6.1940(a)newsfe05.ams2>, Spiros Bousbouras <spibou(a)gmail.com> wrote: > The problem here is that the standard does not allow a Lisp > implementation to do this on the computer I'm using. The standard doesn't prevent Lisp implementations from allowing bignum array indices. It just doesn't require it, so portable applications can't depend on it. -- Barry Margolin, barmar(a)alum.mit.edu Arlington, MA *** PLEASE post questions in newsgroups, not directly to me *** *** PLEASE don't copy me on replies, I'll read them in the group *** |