On Fri, 29 Oct 2004, Jeffrey J. Hallman wrote: > OK, I looked at the documentation and you're right about that. However, > I'm curious about why the first argument to UseMethod is ever necessary. > Is there ever a good reason for it to be something other than the name > of the calling function? (Wouldn't that lead to confusing code?) If > not, why bother with it at all?
Yes. See coefficients(), fitted.values(). Also, you can have anonymous functions in R, operator functions .... > > I've become spoiled by programming a lot recently in Smalltalk, which is > the cleanest language I've used yet. > > Jeff > > > Prof Brian Ripley <[EMAIL PROTECTED]> wrote: > > br> The issue is the use of UseMethod(), which you claim to be valid. As it > br> is inconsistent with the prime documentation, the help page, I would > br> question if it is `perfectly legal'. I expect the author of isUME > br> implemented the behaviour described on the help page. > > br> It is documented in S-PLUS as *strongly discouraged*, and although it is > br> documented in R-lang, I believe the right thing to do is to make the code > br> agree with the prime documentation. > > br> I see no uses of UseMethod() in the R sources, and on CRAN only > br> one in a comment (and none in BioC). > > br> On Thu, 28 Oct 2004 [EMAIL PROTECTED] wrote: > > >> Full_Name: Jeff Hallman > >> Version: 2.0 > >> OS: Linux > >> Submission from: (NULL) (132.200.32.34) > >> > >> > >> The function findGeneric() in the utils namespace contains this internal > >> function: > >> > >> isUME <- function(e) { > >> if (is.call(e) && (is.name(e[[1]]) || is.character(e[[1]]))) { > >> switch(as.character(e[[1]]), UseMethod = as.character(e[[2]]), > >> "{" = isUMEbrace(e), "if" = isUMEif(e), "") > >> } > >> else "" > >> } > >> > >> This fails if the generic called UseMethod() without an argument, which is > >> perfectly legal. Changing it to this seems to work: > >> > >> isUME <- function(e) { > >> if(is.call(e) &&(is.name(e[[1]]) || is.character(e[[1]]))) { > >> switch(as.character(e[[1]]), > >> UseMethod = ifelse(length(e) == 1, fname, as.character(e[[2]])), > >> "{" = isUMEbrace(e), > >> "if" = isUMEif(e), > >> "") > >> } > >> else "" > >> } > >> > >> > >> Jeff > >> > >> ______________________________________________ > >> [EMAIL PROTECTED] mailing list > >> https://stat.ethz.ch/mailman/listinfo/r-devel > >> > >> > > br> -- > br> Brian D. Ripley, [EMAIL PROTECTED] > br> Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ > br> University of Oxford, Tel: +44 1865 272861 (self) > br> 1 South Parks Road, +44 1865 272866 (PA) > br> Oxford OX1 3TG, UK Fax: +44 1865 272595 > > > -- 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 ______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-devel