Forks & Forks

From Esolang
Jump to navigation Jump to search

Forks & Forks is a simple esoteric programming language influenced by Pistons & Pistons invented by User:A; this was created in order to make Pistons & Pistons easier to implement.

Symbols

Programs start on the first character of the program. These determine whether a father process will be forked. Take this as an example:

.V V  
      
 >    
    6,

This program will eventually halt as it prints a few spaces. In the first character of the program it created a father process that is moving right (. is > typed without using the shift key, so it represents a father process); these processes will output every character on its way except for its built-in commands. If processes try to go to the same cell at the same time, both of them will be terminated. (That is why there is a 6, on the bottom of the program, and it is the only way to terminate processes.) If a process is going out of the bounds of the program, it will not be terminated.

On the next step, a fork of this process will be created(going down). Then, a fork for this process will be forked again to move right. (This father process will be terminated by the left-moving ,.)

Then, there are three processes left: >, V, and 6. 6 is used to terminate the main process. The > will collide with V, terminating them both.

If a process is not terminated when it goes over the bounds of a program, it will start to output 0x00 forever.

List of commands

  • >, V, <, ^: these are fork-process commands; this creates a fork of the father if it was in the way of the father. An easy way to remember them is that they all are pressed using the shift key. (At least on the QWERTY keyboard)
  • ., v, ,, 6: these are main-process commands; these create a root process for fork commands to fork. An easy way to remember them is that they all are pressed not using the shift key. After new processes are created, they are converted into the corresponding keys on the QWERTY keyboard without using shifts.

Examples

This example outputs x to the console forever:

>vx  
6,   
   .v
   ^,

Infinite loop

v

Hello, world! program

.Hello World! 
              
              
              
              
              
              
              
              
              
              
              
             6

Implementations

I don’t believe this language can be implemented, however, please prove me wrong if it can.

Computational class

Like Pistons & Pistons, its computational class is also unknown. However, I will be glad if this can perform as many computations as Pistons & Pistons could.