Matrixpone

From Esolang
Jump to navigation Jump to search
This article is a stub, which means that it is not detailed enough and needs to be expanded. Please help us by adding some more information.

Matrixpone is a Mascarpone derivative by User:BoundedBeans. It uses a matrix instead of a stack, but has similar operations.

Storage

Matrixpone has a current interpreter and a matrix. Interpreters still have parents, so this allows a stack, but since the matrix can now be accessed freely instead of LIFO, any element in the matrix can have its own stack. Since there is no popping, elements are not deleted when using them for an operation.

Instructions

v - Take the current interpreter and put it in the matrix cell.
^ - Take the currently pointer matrix cell, which should be an interpreter, and make the current interpreter that matrix cell. 
> - extract, but the symbol should be pointed, and the interpreter should be to the right. This changes the symbol to the extracted operation
< - install, the interpreter should be pointed, operation should be below, and symbol should be above. This replaces the interpreter
{ - get parent, replace the pointed interpreter
} - set parent, selected interpreter should be on the right
* - create, the interpreter should be pointed, the string should be listed left to right, starting on the cell to the right of the pointer
@ - expand, the interpreter will go on the left, and the string will go left to right starting on the cell to the right
! - execute the pointed operation
0 - put the null interpreter at the pointer
1 - uniform, replace the operation with the interpreter
[ - deepquote, works like normal
' - single quote, works like normal
. - outputs the pointed symbol
, - inputs a symbol to the pointer
; - output a nice representation of the matrix, implementation-dependant
: - Instruct the next direction point command to instead copy it to the cell it would normally go to. This is another interpreter.
/ - Instruct the next direction point command to instead swap it with the cell it would normally go to. This is also another interpreter.
A - move the pointer up
V - move the pointer down
) - move the pointer right
( - move the pointer left