paternoster

A 2D programming language with arrows.

The documentation is very spartanic, but I hope you can get all the information you need from it.

This is a little programming language that follows arrows around the file.

The program starts at: ↤, ↥, ↦ or ↧ and then follows the given direction. If ←, ↑, →, ↓, ↖, ↗, ↘, ↙ are hit the program will follow their direction.

The code can also modify itself.

There are operations, which are basically commands. Some have results, some do actions.

Let's look at a little program.

↦ M 2 2 "+" M 2 8 "X" ↓ ↑ P ←

Okay, there's a lot going on in this. Let's start at ↦, which tells the program to start there. Now, M is called. M is the modify operation. It modifies the character at [2, 2] to be a plus. This changes the M into a +. + is an add operation, and it takes two arguments, like this:

1 3 => 4 After that, there is another modify operation which modifies the character on [2, 8] to be a X. X simply terminates the program. The program would now look like this:

↦ + 2 2 X+" M 2 8 "X" ↓ ↑ P ←

Now there's an arrow which redirects the program. Now we hit P, which prints the result of the next operation. The next operation is + 2 2, so it will print 4. X terminates the program.

These are the current operations:

A assigns a variable to a value.

A example 5

will assign 5 to example.

P prints a value.

P example

will print 5.

p example

will print 5 without linebreak.

"" is a string.

P "Hello World!"

will print Hello World!

The operations +, -, /, * and % work as you would think they do.

=, < and > are conditional operators. They work like math operations, and return 1 for true and 0 for false.

! inverts 1 to 0 and 0 to 1.

? is an if operation. After testing, they follow the arrows ↿, ⇃, ↼, ⇀ if the condition is true.

? = x 1 ⇃ P "x is not 1." X

will only print "x is not 1" if x is not one.