|Computational class||Bounded-storage machine|
Foresolang is an 8-bit 128x128 grid of trees. The pointer starts at [0,0]. The code is situated at [-1, 0], and the program ends when this is overwritten with any value. Outside of [0,0] to [127,127] is a duplicate of [127,127] branches (including edit modifications). By default, all branches are at 16. Attempting to underflow will keep it at 0 and overflowing at 255, respectively. Since there is no way to add/subtract without pulling from other branches, you only have total of 262144 branches to use.
move [x] [y] times moves the pointer up (0-63), down (64-127), left (128-191), or right (192-255). X and Y can either be a number or just "
add [x] branches to pointer adds [x] branches to the pointer, taking it from the tree.
x is a number only.
place [x] branches from pointer is the opposite of the above instruction, placing branches down instead of taking them.
take a picture of the tree at the pointer outputs the ASCII value of the tree at the pointer.
take an input takes an input, and puts it where the pointer is. It will use branches from [127,127] and go up to [127,0]. If it still does not have enough branches, it will look through [126,127] to [126,0], and so on until it finds enough.
define a function as "this is some random text [x] [y] [z]" will define a function. executing the function would just be like executing any other instruction, like
this is some random text 120 120 pointer