I want to be able to dispatch to methods defined within an environment. This would allow me to define polymorphic methods for proto objects (proto objects in turn inherit from the environment class). E.g.:
x <- proto()
x$foo <- function(., obj) UseMethod("foo", obj)
x$foo.list <- function(., obj) "obj is a list!"
x$foo.data.frame <- function(., obj) "obj is a data.frame"
x$foo.default <- function(., obj) "obj is neither a list nor a data.frame!"
And so I can do:
> x$foo(list())
[1] "obj is a list!"
> x$foo(1)
[1] "obj is neither a list nor a data.frame!"
However, all I get now when calling x$foo is
Error in UseMethod("foo") :
no applicable method for 'foo' applied to an object of class "c('proto', 'environment')"
How to fix this?