Hacker News new | ask | show | jobs
by civilized 1244 days ago
This works, but only because you can tell which function you need to call using only the first argument.

A more compelling example for Julia would have to have two modes of operation where the first argument has the same type in both modes, but later arguments have different types.

2 comments

    setMethod(myfun, signature = c("integer", "character"), ...)
    setMethod(myfun, signature = c("list", "data.frame", "logical"), ...)
    setMethod(myfun, signature = "foo", ...)
This takes into account as many arguments as you wish.
True, but in R (at least in S3) it's probably avoided by design because of default parameters. A short example:

  genericfun.type1 <- function(x, sub=1) x - sub
  genericfun.type2 <- function(x, y)     sum(x, y)
The single case can be differentiated:

  genericfun(x)
But which function are we calling with:

  genericfun(x, y)
I don't know about Julia and how it solves this. Maybe by not allowing to pass nameless optional arguments.
S4 can dispatch on multiple arguments, just like Julia (though it seems a lot more natural in Julia).