Dear R-developers, I find the current behavior of Negate() somewhat confusing. It does not match the passed function 'f' until the returned function is called for the first time. To see an example of what this can do see the following (contrived) example:
f <- function(x) is.integer(x) not_f <- Negate(f) f <- function(x) is.character(x) ## Both should, in my mind, return TRUE: not_f(1) == !is.integer(1) not_f(1L) == !is.integer(1L) I propose to change Negate() in the following way: ## Easy 'fix': Negate <- function(f) { f <- match.fun(f) function(...) !f(...) } This matches 'f' when Negate() is called and not the first time the return value is used. If the current behavior is desired, maybe a note in the documentation could be added to clarify this peculiarity. Cheers, Olaf Mersmann ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel