You can't have x=x in an argument list. Try the following noting that we put a dot at the end of bar:
> bar <- function() 1 > foo <- function(bar. = bar()) { + bar + } > foo() function() 1 > foo(bar = bar) function() 1 On 9/11/06, Deepayan Sarkar <[EMAIL PROTECTED]> wrote: > Hi, > > I know S manuals used to warn against using the same names for a > variable and a function, but I have never seen that cause problems in > R, so I usually don't pay much attention to it. Which is why the > following behaviour came as a surprise: > > > bar <- function() 1 > > foo <- function(bar = bar()) { > + bar > + } > > foo(9) > [1] 9 > > foo() > Error in foo() : recursive default argument reference > > Exactly what rule am I violating here? > > The following gives a slightly different error, but I assume it has a > similar origin: > > bar <- function() 1 > foo <- function(bar) { > if (missing(bar)) bar <- bar() > bar > } > foo() > > This version works fine though (so the rule probably involves function > arguments somehow): > > foo <- function(baz) { > if (missing(baz)) { > baz <- function() 2 > baz <- baz() > } > baz > } > foo() > > -Deepayan > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel