OK. Can you show code to implement the tail recursive version of fib using callCC in R, say.
Here it is transformed to tail recursive style: fib <- function(i, a = 0, b = 1) { if (i == 0) a else fib(i-1, b, a+b) Now, how do I add callCC to all this so that the fib call presumably does not create a new stack instance? On Sun, Mar 30, 2008 at 1:31 PM, Luke Tierney <[EMAIL PROTECTED]> wrote: > On Sun, 30 Mar 2008, Gabor Grothendieck wrote: > > > I think the only relationship to that is the name since > > it does not appear to allow one to leave a function > > in the middle of its processing and re-enter it back > > at that point -- which is what would be needed. > > The article conflates basic CPS with having first class continuations > as in Scheme. The discussion about compilers and tail calls only > requires downward-only continuations of the kind provided by R's > current callCC. The user interface and coroutine discussion requires > continuations that can be run outside of their creating context. The > most sophisticated variant, as provided in Scheme, also allows > continuations to be run more than once. I don't think any of the > examples in the Wikipedia article need that, but there is some > interesting work on using that to model web browsing behavior. > > At any rate, there is plenty of precedent for using callCC as the name > for the construct here even when the continuation is no longer valid > outside of the creating callCC call. So the relationship is more than > just the name. > > luke > > > > > On Sun, Mar 30, 2008 at 12:04 PM, <[EMAIL PROTECTED]> wrote: > >> > >>> Would anyone like to explain if callCC in R 2.7.0 gives > >>> anything that on.exit does not already provide? > >>> > >>> It seems that the exit condition once defined cannot > >>> be added to overridden whereas with on.exit multiple > >>> on.exit's add additional on.exits rather than being ignored. > >>> > >>> Is this important? > >> > >> It facilitates a completely different style of programming - see > >> http://en.wikipedia.org/wiki/Continuation-passing_style > >> > >> -- > >> http://had.co.nz/ > >> > > > > > ______________________________________________ > > R-devel@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-devel > > > > -- > Luke Tierney > Chair, Statistics and Actuarial Science > Ralph E. Wareham Professor of Mathematical Sciences > University of Iowa Phone: 319-335-3386 > Department of Statistics and Fax: 319-335-3017 > Actuarial Science > 241 Schaeffer Hall email: [EMAIL PROTECTED] > Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel