Power Operator: {R}←{X}(f⍣g)Y

If right operand g is a numeric integer scalar, power applies its left operand function f cumulatively g times to its argument. In particular, g may be Boolean 0 or 1 for conditional function application.

If right operand g is a scalar-returning-returning dyadic function, then left operand function f is applied repeatedly until ((f Y) g Y) or until a strong interrupt occurs. In particular, if g is = or , the result is sometimes termed a fixpoint of f.

If a left argument X is present, it is bound as left argument to left operand function f:

X (f ⍣ g) Y → (X∘f ⍣ g) Y

A negative right operand g applies the inverse of the operand function f,(|g)times. In this case, f may be a primitive function or an expression of primitive functions combined with primitive operators:

compose
¨ each
∘. outer product
commute
\ scan
[] axis
power

Defined, dynamic and some primitive functions do not have an inverse. In this case, a negative argument g generates DOMAIN ERROR.

Examples

 
    (,∘⊂∘,⍣(1=≡,vec))vec    ⍝ ravel-enclose if simple.
 
    a b c←1 0 1{(⊂⍣⍺)⍵}¨abc ⍝ enclose first and last.
 
    cap←{(⍺⍺⍣⍺)⍵}           ⍝ conditional application.
 
    a b c←1 0 1⊂cap¨abc     ⍝ enclose first and last.

 

 
    succ←1∘+                ⍝ successor function.
 
    (succ⍣4)10              ⍝ fourth successor of 10. 
14
    (succ⍣¯3)10             ⍝ third predecessor of 10.
7
    1+∘÷⍣=1                 ⍝ fixpoint: golden mean.
1.618033989
 
    f←(32∘+)∘(×∘1.8)        ⍝ Fahrenheit from Celsius.
    f 0 100
32 212
 
    c←f⍣¯1                  ⍝ c is Inverse of f.
    c 32 212                ⍝ Celsius from Fahrenheit.
0 100
 
    invs←{(⍺⍺⍣¯1)⍵}         ⍝ inverse operator.
 
    +\invs 1 3 6 10         ⍝ scan inverse.
1 2 3 4
 
    2∘⊥invs 9               ⍝ decode inverse.
1 0 0 1
 
    dual←{⍵⍵⍣¯1 ⍺⍺ ⍵⍵ ⍵}    ⍝ dual operator.
 
    mean←{(+/⍵)÷⍴⍵}         ⍝ mean function.
 
    mean dual⍟ 1 2 3 4 5    ⍝ geometric mean.
2.605171085
 
    +/dual÷ 1 2 3 4 5       ⍝ parallel resistance.
0.4379562044
 
    mean dual(×⍨)1 2 3 4 5  ⍝ root-mean-square.
3.31662479
 
    ⍉dual↑ 'hello' 'world'  ⍝ vector transpose.
 hw  eo  lr  ll  od

Warning

Some expressions, such as the following, will cause an infinite internal loop and APL will appear to hang. In most cases this can be resolved by issuing a hard INTERRUPT.

      !⍣-1
!⍣-2