User blog:Josecastroarnaud/Higher-order functions for googology

Take the chained arrow notation, as defined at this site:

a1 → a2 → ... → an

It is equivalent to a function "→", whose argument is an array: let A = [a1, a2, ..., an], then the chained array notation can be written as

→(A)

In the same way, Peter Hurford's extension can be written at

→n(A)

→(A), by definition, is the same as →1(A).

So, one can define a function arrow(n, A) = →n(A), or use a higher-order function, apply: apply(→n, A).

The second form allows us to talk about a sequence of functions, AF = [→1, →2, ... →k]. AF stands for "array function".

My idea is to define a function arrow2, with arguments n (integer), B and A (lists of numbers):

Let t = apply(→n, B); then arrow2(n, B, A) = apply(→t, A).

It's possible to generalize to a sequence of lists of integers:

Let A1, A2, ..., Ak be lists of integers, and n an integer. Then define:

t1 = apply(→n, A1)

tj = apply(→t_ (j-1), Aj)

arrowk(n, [A1, A2, ..., Ak]) = t_k