Вопрос

Я использую GNU APL 1.1 (svn 4460) на Linux 2.6.32 И у меня есть некоторые проблемы с определениями функций.

Этот фрагмент работает, как и ожидалось:

∇R←ODD N
R←2|N
∇

(ODD L)/L←⍳10

Но когда я попробую это

{2|⍵} 5

или это

ODD←{2|⍵}

Я получаю синтаксисную ошибку. Те же фрагменты работают нормально здесь.

Я полный новичок в APL. Может ли кто -нибудь объяснить мне, что вызывает эту ошибку синтаксиса?

Это было полезно?

Решение

В первом примере используется обычная нотация APL «del» для определения функции. Во втором двух примере используется прямое определение (обычно известное как DFNS - произносится Dee -Funs), которое является расширением Dyalog APL, и, очевидно, не работает в используемом интерпретаторе. Простота определения функций таким образом является большим преимуществом.

Другие советы

Синтаксис DFNS (фрагмент функции в кудрявых скоб) не поддерживается всеми APL. Если это не поддерживается, ожидайте синтаксисной ошибки или ошибки, не являющейся ошибкой.

Насколько мне известно, только Dyalog APL и NGN APL (см. http://ngn.github.io/apl/web/) поддержать это.

У Sharp APL была функция прямого определения, но синтаксис был довольно другим.

NGN APL не поддерживает определение устаревшей функции, только DFN.

GNU APL теперь поддерживает такие DFN; Вы можете попробовать его, скомпилируя его из репозитория подрывной деятельности или подогнуть релиз 1.3.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top