Skip to main content

Questions tagged [tail-call]

The tag has no usage guidance.

Filter by
Sorted by
Tagged with
3 votes
3 answers
1k views

Are lessons on tail recursion transferable to languages that don't optimize for it?

I'm currently reading through Structure and Interpretation of Computer Programs (SICP). During the course of that book, the lesson of "you can optimize recursive procedures by writing them as ...
J. Mini's user avatar
  • 1,037
3 votes
2 answers
2k views

When to use tail recursion?

I've recently gotten into functional programming. I asked a question earlier over here "'Remembering' values in functional programming" and learned a lot of things I hadn't even realized I wanted to ...
Ucenna's user avatar
  • 1,302
0 votes
0 answers
67 views

If a delegate contains a tail call request, what happens?

Simply put, what happens when I have a delegate, that delegate contains a method with a tail call request, and then I call it from a non-tail position? If I called the method directly, it would ...
Telastyn's user avatar
  • 110k
3 votes
3 answers
826 views

What can qualify for potential tail call recursion (TCO) optimization or tail recursion elimination (TRE)

Short question is: what can qualify for potential tail call recursion optimization (TCO) or tail recursion elimination (TRE) if the compiler or interpreter supports it. The summary of this question ...
nonopolarity's user avatar
  • 1,837
2 votes
1 answer
318 views

Different Implemenations of Tail Call Optimisation

I've heard some people in my university discuss the tail call optimisation in ML as if it were a special version tail call optimisation. Does the ML (SML/F#) implementations of tco in these languages ...
calben's user avatar
  • 611
2 votes
2 answers
618 views

General recursion to tail-recursion

Is it theoretically possible to transform every kind of general-recursion into tail-recursion? Are they equivalent for example from a lambda-calculus point of view? That's a debate between me and an ...
user131411's user avatar
1 vote
1 answer
1k views

Continuations, coroutines, and tail-call optimization

I am trying to learn continuations and use them to implement coroutines in Scheme. I have two procedures (coroutines) a and b, and I switch between them in the following way: ;; c is a continuation. ...
Giorgio's user avatar
  • 19.7k
4 votes
1 answer
775 views

Tail-recursive implementation of take-while

I am trying to write a tail-recursive implementation of the function take-while in Scheme (but this exercise can be done in another language as well). My first attempt was (define (take-while p xs) ...
Giorgio's user avatar
  • 19.7k
14 votes
4 answers
3k views

When there's no TCO, when to worry about blowing the stack?

Every single time there's a discussion about a new programming language targetting the JVM, there are inevitably people saying things like: "The JVM doesn't support tail-call optimization, so I ...
Cedric Martin's user avatar
4 votes
1 answer
4k views

Tips for Tail Call Recursion in Python [duplicate]

Ok, Python doesn't have tail call optimization. But for those who think better recursively than "looply", whats the best practices to write code?? 1000 stack calls are enough for many cases, but ...
Lucas Ribeiro's user avatar
23 votes
3 answers
4k views

Which are the alternatives to using a stack to represent function call semantics?

We all know and love that function calls are usually implemented using the stack; there are frames, return addresses, parameters, the whole lot. However, the stack is an implementation detail: ...
Lorenzo Dematté's user avatar
50 votes
8 answers
68k views

What methods are there to avoid a stack overflow in a recursive algorithm?

Question What are the possible ways to solve a stack overflow caused by an recursive algorithm? Example I'm trying to solve Project Euler problem 14 and decided to try it with a recursive algorithm....
Lernkurve's user avatar
  • 847
20 votes
2 answers
2k views

Y combinator and tail call optimizations

The definition of a Y combinator in F# is let rec y f x = f (y f) x f expects to have as a first argument some continuation for the recursive subproblems. Using the y f as a continuation, we see ...
nicolas's user avatar
  • 349
38 votes
4 answers
11k views

What limitations does the JVM impose on tail-call optimization

Clojure does not perform tail call optimization on its own: when you have a tail recursive function and you want to have it optimized, you have to use the special form recur. Similarly, if you have ...
Andrea's user avatar
  • 5,425