Как введение в APL, простые правила о функциях и массивах являются адекватными, но как только вы добавите операторы (и особенно операторы dyadi c) в микс, все станет немного сложнее. Хотя правила функций / массивов все еще применяются, теперь функция может быть выведена с использованием одного или нескольких операторов. Фактически, вы можете в конечном итоге посмотреть далеко налево, чтобы выяснить, где «начинается» функция.
Рассмотрим, например, функцию *∘*∘*∘*
, f (a, b) = a e e e b , в контексте 2*∘*∘*∘*3
:
3
это наш массив
*
возможно, мы применим эту функцию монадически к 3
, но это зависит…
∘
Нет: это оператор dyadi c, который "захватывает" *
справа от него, чтобы получить новую функцию
*
возможно, это левый операнд ∘
, но это зависит от…
∘
Нет: это дядя c оператор, который «захватывает» *
справа от него для получения новой функции
*
возможно, это левый операнд ∘
, но это зависит от…
et c.
Так я на самом деле разбираю APL в своей голове. Однако более точный общий подход использует таблицу сильных связей в соответствии с документацией и реализацией модели