From berwin at maths.uwa.edu.au  Mon Feb 23 10:56:23 2009
From: berwin at maths.uwa.edu.au (Berwin A Turlach)
Date: Mon, 23 Feb 2009 17:56:23 +0800
Subject: [Rd] [R] Semantics of sequences in R
In-Reply-To: <49A255A5.1010506@idi.ntnu.no>
References: <8b356f880902221242r47cdb138w9b1ac05cc5e5e317@mail.gmail.com>
	<49A1BFC7.9060503@stats.uwo.ca>
	<8b356f880902221350q4a976bfr19b0d5b01a989250@mail.gmail.com>
	<20090223113422.76cc1494@absentia> <49A255A5.1010506@idi.ntnu.no>
Message-ID: <20090223175623.6106add2@berwin-nus1>

On Mon, 23 Feb 2009 08:52:05 +0100
Wacek Kusnierczyk <Waclaw.Marcin.Kusnierczyk at 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



[Rd] [R] Semantics of sequences in R
Berwin A Turlach