On 4/3/2006 8:08 AM, Henrik Bengtsson wrote: > Follow up: I've downloaded todays R v2.3.0 alpha (2006-04-02 r37626) > for Windows and the below bug has been fixed: > >> yaa <- function(...) substitute(list(...)) >> yaa(foo(x,y,...,z)) > list(foo(x, y, ..., z)) > > Thank you (Duncan!?)
Yes, I think it's fixed. I also caught the older bug that substitute(list(..., z), list(z=1)) returned list(..., z), instead of list(..., 1). The presence of both bugs within a few lines of each other in the source made repairs much more interesting. Duncan Murdoch > Henrik > > On 3/29/06, Henrik Bengtsson <[EMAIL PROTECTED]> wrote: >> On 29 Mar 2006 11:58:34 +0200, Peter Dalgaard <[EMAIL PROTECTED]> wrote: >> > "Henrik Bengtsson" <[EMAIL PROTECTED]> writes: >> > >> > > Hi, >> > > >> > > I've got the following two versions of R on WinXP: >> > > >> > > A) R Version 2.3.0 Under development (unstable) (2006-02-02 r37243) >> > > B) R Version 2.3.0 Under development (unstable) (2006-03-27 r37579) >> > > >> > > and a the following "test.R" script: >> > > >> > > foo <- function(path, ...) { print(path) } >> > > bar <- function(x, ...) foo(...) >> > > wow <- function(x, ...) capture.output(foo(...)) >> > > bar(1, path=2) >> > > print(wow(1, path=2)) >> > > >> > > With A, I get: >> > > >> > > > source("test.R") >> > > [1] 2 >> > > [1] "[1] 2" >> > > >> > > But with B, I get >> > > > source("test.R") >> > > [1] 2 >> > > Error in print(path) : argument "path" is missing, with no default >> > > >> > > Further debugging led me to the following test2.R script: >> > > >> > > foo <- function(path, ...) { print(path) } >> > > bar <- function(x, ...) foo(...) >> > > wow <- function(x, ...) yaa(foo(...)) >> > > yaa <- function(...) substitute(list(...)) >> > > bar(1, path=2) >> > > print(wow(1, path=2)) >> > > >> > > With A, I get >> > > >> > > > source("test2.R") >> > > [1] 2 >> > > list(foo(...)) >> > > >> > > But with B, I get >> > > >> > > > source("test.R") >> > > [1] 2 >> > > list(foo()) >> > > >> > > Note that '...' is missing in the latest version. I don't think this is >> > > wanted. >> > >> > I suspect that you're right. Just for reproduction purposes: The >> > script is not needed, and the whole thing simplifies to the two lines: >> > >> > yaa <- function(...) substitute(list(...)) >> > yaa(foo(...)) >> > >> > which gives list(foo()) in 2.3.0 alpha and used to give list(foo(...)). >> >> And, yaa(foo(x,y,...,z)) gives list(foo(x, y, z)) but used to give >> list(foo(x, y, ..., z)). >> >> /Henrik >> >> > >> > -- >> > O__ ---- Peter Dalgaard Ă˜ster Farimagsgade 5, Entr.B >> > c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K >> > (*) \(*) -- University of Copenhagen Denmark Ph: (+45) >> > 35327918 >> > ~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 >> > > > ______________________________________________ > 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