From ggrothendieck at gmail.com  Wed May 20 01:14:00 2009
From: ggrothendieck at gmail.com (Gabor Grothendieck)
Date: Tue, 19 May 2009 19:14:00 -0400
Subject: [Rd] Qs: The list of arguments, wrapping functions...
In-Reply-To: <c2350ba40905191322y2bffbfdu79f4cb480732252e@mail.gmail.com>
References: <c2350ba40905191322y2bffbfdu79f4cb480732252e@mail.gmail.com>
Message-ID: <971536df0905191614k8a43022me95bc311f8aed792@mail.gmail.com>

match.call() will return the call.   merge.zoo in the zoo package
uses it if you need an example.  as.list(match.call()) will return
a list.

list(...) will return the ... arguments as a list.

$.proto in the proto package allows one to write p$f where p
is a proto object and f is a function and p$f is the function
f(p, ...), i.e. it provides a currying operation.

The Defaults package allows one to dynamically change the
default arguments of functions.

On Tue, May 19, 2009 at 4:22 PM, Kynn Jones <kynnjo at gmail.com> wrote:
> Hi. ?I'm pretty new to R, but I've been programming in other languages for
> some time. ?I have a couple of questions regarding programming with function
> objects.
> 1. Is there a way for a function to refer generically to all its actual
> arguments as a list? ?I'm thinking of something like the @_ array in Perl or
> the arguments variable in JavaScript. ?(By "actual" I mean the ones that
> were actually passed, as opposed to its formal arguments, as returned by
> formals()).
>
> 2. I have a package in which most of the functions have the form:
>
> the.function <- function(some, list, of, params) {
> ? ?return( some.other.function(the.list.of.params.to.this.function));
> }
>
> Is there a way that I can use a loop to define all these functions?
>
> In general, I'm looking for all the information I can find on the subject of
> dynamic function definition (i.e. using code to automate the definition of
> functions at runtime). ?I'm most interested in introspection facilities and
> dynamic code generation. ?E.g. is it possible to write a module that
> "redefines itself" when sourced? ?Or can a function redefine itself when
> first run? ?Or how can a function find out about how it was called?
>
> FWIW, Some of the things I'd like to do are in the spirit of a decorator in
> Python, which is a function that take a function f an argument and return
> another function g that is somehow based on f. ?For example, this makes it
> very easy to write functions as wrappers to other simpler functions.
>
> TIA!
>
> KJ
>
> ? ? ? ?[[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



[Rd] Qs: The list of arguments, wrapping functions...
Gabor Grothendieck