On Fri, 2 Dec 2005, Berwin A Turlach wrote: [...]
> The second behaviour that I cannot explain was produced by code > written by somebody else, namely: > > > foo > function(x){ > z <- x/4 > while( abs(z*z*z-x) > 1e-10 ){ > z <- (2*z+x/z^2)/3 > } > } > > The documentation of function() says that if "the end of a function is > reached without calling 'return', the value of the last evaluated > expression is returned." And this seems to happen in this case: Yes, but that value can be returned with R_Visible set to 0, by calling invisible() _or otherwise_. > > z <- foo(3) > > z > [1] 1.442250 > > However, my understanding was always that the return value of a > function issued on the command line will be printed; except, of > course, if invisible() is used to return the value. This is not the > case for the above function: > > > foo(3) > > produces no output. And this had us stunned for some time. On the > other hand: > > > ( foo(3) ) > [1] 1.442250 > > So my question is why does R, when "foo(3)" is issued on the command > line, not print the value returned by the function? R does not print the value of a while() loop. Try x <-3 z <- x/4 while( abs(z*z*z-x) > 1e-10 ){ z <- (2*z+x/z^2)/3 } .Last.value and you are seeing no different. (Look up the code of do_while for why.) -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel