Sorry it should be as follows: fib <- function(i, a = 0, b = 1) { if (i == 0) b else fib(i-1, b, a+b) }
Now, how do we transform that to use callCC? On Sun, Mar 30, 2008 at 1:42 PM, Gabor Grothendieck <[EMAIL PROTECTED]> wrote: > 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