[Rd] An artifact of base being namespace
Saikat DebRoy
saikat at stat.wisc.edu
Fri Oct 10 18:00:51 MEST 2003
On Friday, Oct 10, 2003, at 08:35 US/Eastern, Martin Maechler wrote:
>>>>>> "Saikat" == Saikat DebRoy <saikat at stat.wisc.edu>
>>>>>> on Thu, 9 Oct 2003 11:41:01 -0400 writes:
>
> Saikat> This is most problematic when you are creating a
> Saikat> generic for an existing function in base (as you
> Saikat> very well could for log). This often makes the
> Saikat> ability to make new generics out of existing
> Saikat> functions somewhat useless.
>
> Assuming you're right, I'm much less sure that this consequence
> has been intended in all situations. But I'd need to see
> concrete examples to understand your last sentence.
>
Here is an example of what I was saying.
> setClass('foo', representation(x='numeric'))
[1] "foo"
> setMethod('log', signature(x='foo', base="missing"),
+ function(x, base) callGeneric(x at x))
[1] "log"
> setMethod('log', 'foo', function(x, base)
+ callGeneric(x at x, base))
[1] "log"
> log(new('foo', x=100))
[1] 4.60517
> log10(new('foo', x=100))
Error in log(x, base) : Non-numeric argument to mathematical function
>
This means that if I create a generic for 'log', I should also create a
generic for each function in base that makes a call to 'log'. That is
not what I expected.
More information about the R-devel
mailing list