Why Not Tail Recursion?
20 days ago
- #TailRecursion
- #FunctionalProgramming
- #Futhark
- Futhark does not allow recursive functions due to its focus on parallel programming and GPU code generation, where recursion is inefficient or impossible.
- Futhark provides dedicated syntax for sequential looping (e.g., 'loop') to avoid stack usage, equivalent to tail-recursive functions.
- Tail call elimination is not feasible in Futhark because it generates C code, and tail calls are not easily expressible in C.
- Futhark requires ironclad guarantees for tail recursion optimization, rejecting non-tail recursion to prevent stack overflow.
- Most functional languages do not guarantee tail recursion optimization, though they often perform well in practice.
- Scheme was one of the first languages to precisely specify tail call optimization rules, but these rules can constrain programming style.
- Futhark's design prioritizes simplicity and predictability, using dedicated loop syntax to avoid complex rules or analysis.
- The language's restrictions encourage programmers to focus on algorithm design without recursion rather than navigating language limitations.