En APL, las funciones no pueden aprobarse como argumentos a las funciones. Sin embargo, APL tiene operadores, que son funciones de orden superior, que pueden tomar funciones como argumentos. Hay operadores primitivos como / (reducción) utilizados, por ejemplo, para resumir un vector + / v. La función + es el operando izquierdo y se pasa al operador /.
En Dyalog APL, hay un operador primitivo que usa (llamado "potencia") para aplicar una función n veces para que podamos escribir:
double←{2×⍵}
(double ⍣ 2) 7
28
(double ⍣ 10) 7
7168
También puede escribir sus propios operadores (en la mayoría de los APL). En Dyalog APL podemos escribir su operador AplicattWice como:
applytwice←{⍺⍺ ⍺⍺ ⍵}
double applytwice 7
28
Finalmente, puede pasar las funciones colocándolas en un espacio de nombres y pasando el espacio de nombres en su lugar. Esta es como una instancia de clase muy ligera con un método. Por ejemplo:
s←⎕NS ''
s.f←{2×⍵}
ApplyFTwice←{⍺.f ⍺.f ⍵}
s ApplyFTwice 7
28
En este caso, la función debe llamarse F, pero podríamos muchas funciones diferentes llamadas F, cada una en su propio espacio de nombres.