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)
|
Too much of a good thing? Sergei Egorov 10 Apr 2003 08:20 UTC
I completely agree with all "remove this" comments made by Michael Burschik. <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. The reason for the existence of vectors is constant-time access by index and smaller memory footprint; everything else is better done with lists. 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. I suggest to drop everything that is not related to the main purpose of vector's existance: constant-time indexed access. Here's what I would left (in addition to what's already in Scheme): vector-tabulate vector-copy! vector-append vector-reverse! vector-fold{-right} vector-unfold{-right} vector-map! vector-map/index! vector-for-each{-right} vector-index{-right} vector-skip{-right} vector-fill! ;extended version </Flame> It would also be nice to have in-place versions of insert/delete where insert drops elements off the tail while delete shifts in an (optional) new value. Left/right and circular shifts are also useful. -- Sergei