4 ms·
For loops (where the user is not allowed to change the value of the iterator mid-iteration) are guaranteed to terminate.
by deredede 3y ago
For loops (where the user is not allowed to change the value of the iterator mid-iteration) are guaranteed to terminate.
- insanitybit 3y agoYeah, I just wanted to point out that it's possible in ebpf.
- deredede 3y agoFair enough :) Although skimming the paper you linked, they say they don't check termination of loops, which surprises me.
- fardo 3y agoOr create more loops, since for example adding For (;;) { print(“hahaha you didn’t say the magic word!”); } In another loop would also prevent termination without program shutdowns.
- deredede 3y agoDon't let weird C syntax choices fool you, this is a while loop, not a for loop. To clarify, when I said "for loop", I meant what is sometimes called a "counted for loop" (or simply "counted loop"): there is an (maximum, if you allow early exit) iteration count that is computed before executing the loop and can't increase later. In C syntax, it is for (int i = 0, e = ...; i < e; ++i) { ... } and the body of the loop is not allowed to change the value of either i or e. Edit: actually I may have been unclear. When I said "for loops are guaranteed to terminate", in the context of the discussion, I meant "if the only kind of loops you allow are (counted) for loops in a language where loop-free expressions are guaranteed to terminate, you get a language where all expressions are guarantee to terminate". So loops can contain other loops, as long as they are all of the "counted for loop" kind.