В APL функции не могут быть переданы в качестве аргументов для функций. Тем не менее, APL имеет операторы, которые являются функциями более высокого порядка, которые могут принимать функции в качестве аргументов. Существуют примитивные операторы, такие как / (сокращение), например, для суммы вектора + / V. Функция + - левый операнд и передается в оператор /.
В Dyalog APL есть примитивный оператор, использующий (именованную «питание») для применения функции n раз, чтобы мы могли написать:
double←{2×⍵}
(double ⍣ 2) 7
28
(double ⍣ 10) 7
7168
Вы также можете написать своих собственных операторов (в большинстве APL). В Dyalog APL мы можем написать ваш оператор ApplyTwice как:
applytwice←{⍺⍺ ⍺⍺ ⍵}
double applytwice 7
28
Наконец, вы можете выполнять функции, поместив их в пространство имен и пропустив пространство имен. Это похоже на очень легкий экземпляр класса с методом. Например:
s←⎕NS ''
s.f←{2×⍵}
ApplyFTwice←{⍺.f ⍺.f ⍵}
s ApplyFTwice 7
28
В этом случае функция должна быть названа F, но мы могли бы много разных функций с именем F, каждая в своем собственном пространстве имен.