On Mon, 21 Aug 2006, Seth Falcon wrote: > John Chambers <[EMAIL PROTECTED]> writes: > > > When I was introducing the special type for S4 objects, my first > > inclination was to have length(x) for those objects be either NA or an > > error, along the lines that intuitively length(x) means "the number of > > elements in the vector-style object x". However, that change quickly > > was demonstrated to need MANY revisions to the current code. > > Perhaps some details on the required changes will help me see the > light, but I would really like to see length(foo) be an error (no such > method) when foo is an arbitary S4 class.
According to the Blue Book p.96 every S object has a length and 'An Introduction to R' repeats this. So I believe an error is not an option. Indeed, from the wording, I think code could legitimately assume length(x) works and 0 <= length(x) and it is an integer (but not necessarily of type 'integer'). Certainly functions and formulae have a length (different for functions in S and R, as I recall), and they are not 'vector-style'. > I have encountered bugs due to accidental dispatch -- functions > returning something other than an error because of the zero-length > list implementation of S4. It would not be surprising if some of the > breakage caused by removing this "feature" identifies real bugs. > > I was thinking that one of the main advatnages of the new S4 type was > to get away from this sort of accidental dispatch. Not trying to be > snide, but what is useful about getting a zero for length(foo)? The > main use I can think of is in trying to identify S4 instances, but > happily, that is no longer needed. > > + seth -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel