Na APL, as funções não podem ser aprovadas como argumentos para as funções. No entanto, o APL possui operadores, que são funções de ordem superior, que podem assumir funções como argumentos. Existem operadores primitivos como / (redução) usados, por exemplo, para resumir um vetor + / v. A função + é o operando esquerdo e é passado para o operador /.
No Dyalog APL, existe um operador primitivo usando o (chamado "Power") para aplicar uma função n vezes para que possamos escrever:
double←{2×⍵}
(double ⍣ 2) 7
28
(double ⍣ 10) 7
7168
Você também pode escrever seus próprios operadores (na maioria dos APLs). Em Dyalog APL, podemos escrever seu operador Applytwice como:
applytwice←{⍺⍺ ⍺⍺ ⍵}
double applytwice 7
28
Por fim, você pode passar funções colocando -as em um espaço para nome e passando o espaço para nome. É como uma instância de classe muito leve com um método. Por exemplo:
s←⎕NS ''
s.f←{2×⍵}
ApplyFTwice←{⍺.f ⍺.f ⍵}
s ApplyFTwice 7
28
Nesse caso, a função deve ser nomeada F, mas poderíamos muitas funções diferentes denominadas F, cada uma em seu próprio espaço para nome.