▲ | AndyKelley 3 days ago | |||||||
You can put a big buffer on the stack, and use this buffer to break your cycles. At some point you'll run out of this buffer and be forced to handle failure, rather than triggering a stack overflow segfault. So it will be the same thing but with more (error handling) steps. This annoyance can be avoided by avoiding recursion. Where recursion is useful, it can be done, you just have to handle failure properly, and then you'll have safety against stack overflow. | ||||||||
▲ | CJefferson 3 days ago | parent | next [-] | |||||||
Wait, so how do I write mutually recursive functions, say for a parser? Do I have to manually do the recursion myself, and stick everything in one big uber-function? | ||||||||
▲ | eru 3 days ago | parent | prev [-] | |||||||
Does Zig offer (guaranteed) tail call optimisation? > Where recursion is useful, [...] Recursion is so useful, most imperative languages even have special syntax constructs very specific special cases of recursion they call 'loops'. | ||||||||
|