Forum:Is my notation as powerful as array notation?

Hey. Newb here. I wanted to see how far I could go by developing my own notation from scratch. Not to set any records, just for fun. I kept adding more and more levels of recursion, then realized it could all be described by a simple set of rules. The rules are like this:

A chain is a list of 1 or more nonnegative integers numbers(terms) seperated by bars, with a leading bar, ex: |2|0|71|9, |4, |3|68, etc.

Any leading zeros in a chain with length > 1 are immediately discarded (unless the zero is the chain's only element), ex: |0|0|5|0|1 = |5|0|1

Chains can be assigned to variables- a chain varaible is prefixed with a ~, ex: ~x, ~a, ~thisIsAChain, etc

Chains can be decremented with the -- operator. Decrementing a chain will subtract one from the farthest right nonzero element of the chain.

ex: |2|0|0-- = |1|0|0, |3|4-- = |3|3, if we let ~x = |2|2 then ~x-- = |2|1, etc.

Every chain can also be used as a function, ex. |3|6|3(9,1), ~n(2,6)

When used as a function, a chain takes exactly 2 arguments.

The result of the function is specified by these rules:


 * 0(x,y) = x+1


 * a|0|0|0...{e "|0"s}...|0|0 (x,y) = |a-1|x|x|x...{e "|x"s}...|x|x(x,x)  (If a chain is made of a leading nonzero term followed by all zeros, the 0's are replaced by x and the leadingo term is decremented)

if neither of the above cases hold,

~n(x,1) = ~n--(x,x)

~n(x,y) = ~n(~n--(x,x), y-1)