[Rd] E`<`<rrors in recursive default argument references
Stavros Macrakis
macrakis at alum.mit.edu
Mon Mar 9 20:13:56 CET 2009
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
(function(a = a) (a) ) ()
(function(a = a) -a ) ()
(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.
-s
More information about the R-devel
mailing list