[Rd] E`<`<rrors in recursive default argument references
Wacek Kusnierczyk
Waclaw.Marcin.Kusnierczyk at idi.ntnu.no
Mon Mar 9 22:40:06 CET 2009
Stavros Macrakis wrote:
> Tested in: R version 2.8.1 (2008-12-22) / Windows
>
> Recursive default argument references normally give nice clear errors.
> In the first set of examples, you get the error:
>
> Error in ... :
> promise already under evaluation: recursive default argument
> reference or earlier problems?
>
> (function(a = a) a ) ()
> (function(a = a) c(a) ) ()
> (function(a = a) a[1] ) ()
> (function(a = a) a[[1]] ) ()
> (function(a = a) a$x ) ()
> (function(a = a) mean(a) ) ()
> (function(a = a) sort(a) ) ()
> (function(a = a) as.list(a) ) ()
>
> But in the following examples, R seems not to detect the 'promise
> already under evaluation' condition and instead gets a stack overflow,
> with the error message:
>
> Error: C stack usage is too close to the limit
>
when i run these examples, the execution seems to get into an endless
loop with no error messages whatsoever. how much time does it take
before you get the error? (using r 2.8.0 and also the latest r-devel).
vQ
> (function(a = a) (a) ) ()
> (function(a = a) -a ) ()
>
btw. ?'-' talks about '-' as a *binary* operator, but the only example
given there which uses '-' uses it as a *unary* operator. since '-'()
complains that '-' takes 1 or 2 arguments, it might be a good idea to
acknowledge it in the man page.
> (function(a = a) var(a) ) ()
> (function(a = a) sum(a) ) ()
> (function(a = a) is.vector(a) ) ()
> (function(a = a) as.numeric(a) ) ()
>
> I don't understand why the two sets of examples behave differently.
>
a bug in excel?
vQ
More information about the R-devel
mailing list