[Rd] a question about (
Wacek Kusnierczyk
Waclaw.Marcin.Kusnierczyk at idi.ntnu.no
Mon Feb 23 21:05:26 CET 2009
i wonder why the following approach to make an 'object' executable could
not be made to work:
foo = 1:3
class(object) = c('foo', class(foo))
'(.foo' = function(foo, fun) sapply(foo, fun)
foo
# 1 2 3
foo(function(x) x^2)
# error: no function foo defined
the actual example is inessential, and is inspired by the __call__
method available in python.
what happens is, as of my understanding, that r sees an application
expression with the operator 'foo', and so tries to find a so-named
function, and there is none, hence the error. however, there *is* an
object named 'foo' there, and so it would, in principle, be possible to
make r try in turn dispatching '(' on the object's type. this would
lead to the function (.foo, and a successful application.
isGeneric('(')
# error: methods may not be defined for primitive function "(" in
this version of R
makes me wonder whether making ( a generic function that would work
along the lines sketched above was actually considered for future
versions of r. (or has it actually been removed?)
vQ
More information about the R-devel
mailing list