We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

Talk:Tapeworm

From Esolang
Jump to navigation Jump to search

Infinite loop

The infinite loop program does not appear to run infinitely as-written. The toggle inside of the loop will set the condition back to 1 on the second iteration of the loop, causing it to exit. I think it might need to be written as:

*(!) // this is incorrect, see below.

In general, in reversible programming languages, infinite loops require infinite memory (unless the program is in an implicit loop), so you should expect that even the simplest infinite loops will involve incrementing a counter or moving a tapehead, or some other unbounded memory operation.

I also was a little confused initially, as, in existing reversible computational systems, like the Pendulum Instruction Set Architecture, the term "direction bit" refers to a register that, in addition to inverting the behavior of instructions, also inverts the direction that the instruction pointer moves. However, in this language, it acts more like a mini-Turning tarpit element that switches between an inverted and non-inverted shift instruction. This isn't to say that the behavior in the language needs to change, but it might be worth clarifying since the terminology overlaps. --ImOnlyHereForReversibleComputing (talk) 01:11, 20 October 2026 (UTC)

Revisiting this, I think I was confused by the original Turing completeness proof table, and didn't notice that the shift instruction also toggles the direction bit. A basic infinite loop would actually need to be written as:
*(!%)
Or *(%!); either could work. --ImOnlyHereForReversibleComputing (talk) 16:40, 31 October 2026 (UTC)