TempoVar
From Esolang
In this programming language TempoVar, there is only one variable and one flag. It also supports backtracking and executing commands on future tempos.
Commands:
- period: This command steps to the next tempo.
- number,colon,command: This is a do execution of commands in a future tempo. The number (which must be a integer at least 1) is the number of tempo steps until it is executed. It is executed right on the tempo, and if multiple commands are waiting on a tempo, it is a queue (first in first out) that executes in order all during same step.
- zero or more commands in curly braces: This counts as one unit so can be used where a command is used.
- percent,command: This sets the value of variable to that command.
- at: The at sign executes the command stored in the variable.
- plus,command: Makes a backtrack point (similar to MAYBE in backtracking INTERCAL, the choice point is added to stack, which contains the entire program state). The command executes now (after the choice-point is added to stack), but not on backtracking.
- minus,command: Makes another backtrack point but the default is not execute command, and it executes on backtracking.
- less: This is a GO BACK to the recent backtrack point, and now it is stale. If it is stale it discards instead.
- greater: This discards the recent backtrack point regardless of stale or not.
- number,asterisk,command: This will execute the command the number multiples of times.
- left parenthesis,command: Input one bit and execute command if bit is set.
- zero,right parenthesis: Output bit 0.
- one,right parenthesis: Output bit 1.
- slash: Toggle the flag.
- question mark,command: Execute command if flag is set.
- semicolon: Comment until end of line.
- uppercase letters,command: Define a command letter to be included when using lowercase letters. Each letter can only be defined once, and only at the outer level of the program.
- underscore,command: Prepends command to the beginning of value of variable.
Example of cat program:
%{?/(/?1)/?0)@}@
Example to copy a flag to a later tempo-step:
?1:{?//}/?1:{?/}/
Example to count up in unary:
E{0)0)1)0)0)0)0)1)} ; exclamation mark
L{0)0)0)0)1)0)1)0)} ; line feed
%{_el@}@

