Commands defined and referenced by [ID]: "command in quotes"
After definition, commands may be referenced by ID
Connections defined by reference => reference [=> reference ...]
Expressions are separated by ;
- file1.txt:
one - file2.txt:
two
> "cat file1.txt" => "echo"; one > A: "cat file1.txt"; B: "echo"; A -> B; one > A: "cat file 1.txt" => B: "echo" => C: "echo"; A => C; one one
stdout is piped with =>, =out>, or =0>
stderr is piped with =err>, or =1>
Other pipes are probably piped with =#>
Arrow supports most of Python slice syntax, so =0:2> is stdout and stderr, =0:-1> is all but the last output pipe, and =:> is all output pipes.
double_out: printoutto stdout, printerrto stderrmerge_pipes: non-deterministically merge all input pipes into one based on time
> "double_out" => "echo"; out > "double_out" =out> "echo"; out > "double_out" =err> "echo"; err > "double_out" =:> "merge_pipes"; out err
Now imagine that identifiers are persistent as long as the program is still running, so you can have a less-like program running in some window and can dynamically send arbitrary output to it from another terminal.