Too much of a good thing?
Sergei Egorov
(10 Apr 2003 07:20 UTC)
|
Re: Too much of a good thing? Per Bothner (11 Apr 2003 05:54 UTC)
|
AW: Too much of a good thing?
Michael Burschik
(11 Apr 2003 07:35 UTC)
|
Re: AW: Too much of a good thing?
Per Bothner
(11 Apr 2003 15:18 UTC)
|
AW: AW: Too much of a good thing?
Michael Burschik
(14 Apr 2003 08:32 UTC)
|
Re: Too much of a good thing?
David Rush
(23 Apr 2003 09:21 UTC)
|
Re: Too much of a good thing?
Taylor Campbell
(15 Apr 2003 02:16 UTC)
|
Re: Too much of a good thing? Per Bothner 11 Apr 2003 05:55 UTC
Sergei Egorov wrote: > <Flame> > I think that most of the operations that generate vectors element-by-element > are useless, especially when the performance is the same as in making a list > first and then turning it into a vector. - which of course is never. > The reason for the existence of vectors > is constant-time access by index and smaller memory footprint; everything > else is better done with lists. I'd say: (almost) everything is better done with vectors, if you care about performance at all. > Having one humongous SRFI for lists pretty > much solves the problem; there is no need to replicate it for every "linear" > data structure. What Scheme needs is more orthogonality, not less, and > this SRFI (together with large part of Olin's string-lib) just adds more > names, > not more functionality. Orthogonal approach is to abstract over the > concept of "sequence" (this is not the same as giving "generic" versions > of all the functions with switch by pair? / string? / vector?) and have > a good SRFI for high-order functions like COMPOSE, NEGATE, > CURRY, BIND, etc. Only in places where sequences are different > from each other do we need new functions; in case of vectors, they > support effective direct access to / modification of content. This I very much agree with - however it is very different from the historical "Scheme way of doing things." (Kawa does have vectors, lists, strings, and uniform-vectors all special cases of sequences.) > I suggest to drop everything that is not related to the main purpose > of vector's existance: constant-time indexed access. Linear-time operations, such as iterating over all the elements of a sequence, are also typically much faster using vectors, thanks to better cache utilization. -- --Per Bothner xxxxxx@bothner.com http://per.bothner.com/