From blindglobe at gmail.com  Wed Apr 20 18:20:51 2005
From: blindglobe at gmail.com (A.J. Rossini)
Date: Wed Apr 20 18:21:01 2005
Subject: [Rd] Overloading methods in R
In-Reply-To: <BAY17-F35C3663390F61BA4A6BBBFD12B0@phx.gbl>
References: <51e673cd8d2702cf963930629b2fa87d@mail.nih.gov>
	<BAY17-F35C3663390F61BA4A6BBBFD12B0@phx.gbl>
Message-ID: <1abe3fa9050420092020ee934e@mail.gmail.com>

R.oo tries to implement an old-fashioned OO system as found in Java,
Python, C++, etc.  R's S4 methods implement a nice modern system based
on the generic function approach , dispatch on argument signatures,
which is different.

While the R documentation for S4 classes is quite useful (spanning the
green book, the BioC developer help pages,  V&R's book on programming,
and some other papers), I've found that for a nice background, Paul
Graham's ANSI Lisp book, and in particular the nicely written chapter
on CLOS, provides a nice introduction to the thought process.

With respect to the R.oo package, the author might be the best source for that.

Another package which you might take a look at is the proto package,
which provides prototype object-orientation similar to that found in
XLispStat, and also might help with what you are trying to do. 
However, I suspect that learning about the S4 system will provide more
benefit in the future.

best,
-tony

On 4/20/05, Ali - <saveez@hotmail.com> wrote:
> Sean,
> 
> Thanks, but, I am actually talking about overloading 'methods' and not
> 'functions', or you may want to answer this question: How to overload
> methods in classes created by R.oo package?
> 
> >
> >On Apr 20, 2005, at 8:16 AM, Ali - wrote:
> >
> >>(1) It seems to me that, generally, in R it is not possible to  overload
> >>functions. Is that right?
> >>
> >>(2) Assuming that the above is true, or partially true, is there any
> >>extra packages to handle overloading in R?
> >>
> >>(3) Assuming (1) is TRUE and (2) is FALSE, can anyone provide some  advice
> >>on developing some function that understand what the arguments  are and
> >>then calls the right overloaded function?
> >>
> >>It would be something like this:
> >>
> >>overloadedFunction1 <- function(x) {};
> >>
> >>overloadedFunction2 <- function(x, y) {};
> >>
> >>theFunction <- function(...)
> >>{
> >>   # How to identify ... and call the right overloaded function?
> >>}
> >>
> >
> >Ali,
> >
> >You are probably interested in "methods".  Functions can have different
> >"methods" depending on what the arguments and their types are.  A first
> >place to look is:
> >
> >http://cran.r-project.org/doc/manuals/R-exts.html#Generic-functions-
> >and-methods
> >
> >Sean
> >
> 
> ______________________________________________
> R-devel@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 


-- 
best,
-tony

"Commit early,commit often, and commit in a repository from which we can easily
roll-back your mistakes" (AJR, 4Jan05).

A.J. Rossini
blindglobe@gmail.com


[Rd] Overloading methods in R
A.J. Rossini