From ripley at stats.ox.ac.uk  Thu Oct 28 23:48:48 2004
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Thu Oct 28 23:48:55 2004
Subject: [Rd] (PR#7320) Internal function isUME() in findGeneric() is wrong
In-Reply-To: <20041028150131.073BE11350@slim.kubism.ku.dk>
Message-ID: <Pine.LNX.4.44.0410282233360.13955-100000@gannet.stats>

The issue is the use of UseMethod(), which you claim to be valid.  As it
is inconsistent with the prime documentation, the help page, I would
question if it is `perfectly legal'.  I expect the author of isUME
implemented the behaviour described on the help page.

It is documented in S-PLUS as *strongly discouraged*, and although it is
documented in R-lang, I believe the right thing to do is to make the code
agree with the prime documentation.

I see no uses of UseMethod() in the R sources, and on CRAN only
one in a comment (and none in BioC).

On Thu, 28 Oct 2004 jhallman@frb.gov 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
> 
> ______________________________________________
> R-devel@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
> 

-- 
Brian D. Ripley,                  ripley@stats.ox.ac.uk
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


[Rd] (PR#7320) Internal function isUME() in findGeneric() is wrong
Prof Brian Ripley