User blog comment:MilkyWay90/Generalized Factorial Function/@comment-35392788-20180517135333/@comment-35392788-20180601103645

I realized that I could do much better with my process, and here the very simple new version :

We define the default value as the smallest value that leads into undefined behaviour when decreased any more. In most array notations, it's 1, but it's 0 in Taro's Ackermann Function.

As long as the rules of the notation can be applied, apply them.

If the expression is only made of !s and default values, then the result of the expression is that of the expression with all !s replaced by default values.

Otherwise, replace the rightmost ! by the expression with the leftmost non-default value decreased by one.

This allows us to do this :

a^! is the expofactorial (i.e 5^! = 5^4^3^2^1), or a!1 in HAN.

a^^! is the tetrofactorial (4^^! = 4^^3^^2^^1) or a!2 in HAN.

etc.

Let's see what A(!,!,!,1) is with these rules :

A(!,!,!,1) = A(!,!,A(!,!,!,0),1) = A(!,!,A(0,0,0,0),1) = A(!,!,1,1) = A(!,!,0,A(!,!,1,0)) = ... = A(!,!,0,A(A(2,1,2,2),0,0,3))

Hey, that's pretty good !