On Wed, November 14, 2007 09:09, Prof Brian Ripley wrote: > On Tue, 13 Nov 2007, Prof Brian Ripley wrote: > >> On Tue, 13 Nov 2007, John Chambers wrote: >> >>> What's the proposal here? To eliminate "double" as a class? No >>> objection >> >> Eliminate "double" and "single". >> >>> from this corner. As I remember, it was put in early in the >>> implementation of methods, when I was confused about what R intended in >>> this area (well, I'm not totally unconfused even now). >>> >>> If this is the proposal, we could implement it in r-devel and see if >>> there are complaints. >> >> I was going to propose so after running some tests over CRAN/BioC (which >> will take a few hours). > > Which showed up problems in packages Matrix and matlab. > > Matrix clearly has a different view of these classes: > > ## "atomic vectors" (-> ?is.atomic ) -- > ## --------------- those that we want to convert from old-style "matrix" > setClassUnion("atomicVector", ## numeric = {integer, double} but all 3 > should *directly* be atomic > members = c("logical", "integer", "double", "numeric", > "complex", "raw", "character")) > > If I remove "double" there, I get an error in an example: > >> stopifnot(is(scm, "sparseVector"), > + identical(cm, as.numeric(scm))) > Error in as([EMAIL PROTECTED], mode) : > no method or default for coercing "numeric" to "double" > > and looking at the code suggests that "double" is used as the class name > in several places. > > > Package matlab is simpler: test mkconstarray.R fails at > > > test.mkconstarray(list(class.type = "double", value = pi, size = 4), > rep(pi, 4)) > Error in as(value, match.arg(class.type)) : > no method or default for coercing "numeric" to "double" > > and needs the author to rectify his confusion between "class" and "type". > > I'd like to give the Matrix authors a chance to look into this before > making the change. Loking at the packages has reinforced my impression > that having "double" as an S4 class is only adding confusion, so the > change is desirable.
I think (without having had time to check all implications) that I agree quite a bit. I don't think that I was not partly confused about things, either as they were in Matrix when I "entered the project" or as they turned out to work or fail, when we started to use those class definitions quite a few R versions back, when also "methods" / "base" may have behaved a bit differently than now. I must admit that I did not program according to documented behavior, but rather to work behavior :-) ;-) I'm very busy the rest of this week, in out'of'town meetings, so won't be able to comment much more. Martin ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel