On Mon, 23 Feb 2009 08:52:05 +0100 Wacek Kusnierczyk <waclaw.marcin.kusnierc...@idi.ntnu.no> wrote: > Berwin A Turlach wrote: > > G'day Stavros, > <snip> > >> In many cases, the orthogonal design is pretty straightforward. > >> And in the cases where the operation is currently an error (e.g. > >> sort(list(...))), I'd hope that wouldn't break existing code. [...] > >> > > > > This could actually be an example that would break a lot of existing > > code. > > > > sort is a generic function, and for sort(list(...)) to work, it > > would have to dispatch to a function called sort.list; and as > > Patrick Burns' "The R Inferno" points out, such a function exists > > already and it is not for sorting list. > > > > and you mean that sort.list not being applicable to lists is a) good > design, and b) something that by noe means should be fixed, right?
I neither said nor meant this and I do not see how what I said could be interpreted in such a way. I was just commenting to Stavros that the example he picked, hoping that it would not break existing code, was actually a bad one which potentially will break a lot (?) of existing code. Also, until reading Patrick Burns' "The R Inferno" I was not aware of sort.list. That function had not registered with me since I hardly used it. And I also have no need of calling sort() on lists. For em a lists is a flexible enough data structure such that defining a sort() command for them makes no sense; it could only work in very specific circumstances. > > In fact, currently you get: > > > > R> cc <- list(a=runif(4), b=rnorm(6)) > > R> sort(cc) > > Error in sort.list(cc) : 'x' must be atomic for 'sort.list' > > Have you called 'sort' on a list? > > > > one of the most funny error messages you get in r. note also that, > following rolf turner's lists and vectors unproven theorem, a vector > can be considered a list I do not remember the exact context of Rolf's comments, but I believe he was talking in a more general sense and not in technical terms. I find it perfectly valid, even when talking about R, to say something like "vectors are stored as a list of numbers in consecutive memory locations in memory". Clearly, in a phrase like this, we are not talking about "vectors" and "list" as defined by the "R Language Definition" or "R Internals", or what functions like is.vector(), is.list() &c return for various R objects. BTW, as I mentioned once before, you might want to consider to lose these chips on your shoulders. > -- hence sort.list should raise the error on any vector input, no? You will have to take that up with the designers of sort.list. > > Thus, to make sort(list()) work, you would have to rename the > > existing sort.list and then change every call to that function to > > the new name. I guess this might break quite a few packages on CRAN. > > > > scary! it's much preferred to confuse new users. I usually learn a lot when I get confused about some issues/concept. Confusion forces one to sit down, think deeply and, thus, gain some understanding. So I am not so much concerned with new users being confused. It is, of course, a problem if the new user never comes out of his or her confusion. Cheers, Berwin ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel