2013-11-07 1 views
3

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

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

∇R←ODD N 
R←2|N 
∇ 

(ODD L)/L←⍳10 

Но когда я пытаюсь это

{2|⍵} 5 

или это

ODD←{2|⍵} 

я получаю ошибку синтаксиса. Те же фрагменты отлично работают here.

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

ответ

4

В первом примере используется условное обозначение APL «del» для определения функции. Во вторых двух примерах используется прямое определение (обычно называемое dfns - выраженное dee-funs), которое является расширением Dyalog APL и, очевидно, не работает в используемом интерпретаторе. Легкость определения функций таким образом является большим преимуществом.

+0

спасибо. Какой интерпретатор вы порекомендуете для человека, который работает в ящике Linux, и захочет взглянуть на APL. Я обнаружил, что есть Dyalog Personal Edition для Linux, но я не смог найти загрузку. Тогда есть NARS2000, но, видимо, это только для окон? Как я могу начать работу с APL? – Hyperboreus

+0

Я обязательно поеду с Дялогом. Их веб-сайт не так хорош, как их продукт ... Я просто отправлю их по электронной почте о том, как получить версию Linux. –

+0

сделаю. Спасибо. – Hyperboreus

2

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

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

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

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

2

GNU APL теперь поддерживает такие dfns; вы можете попробовать его, скомпилировав его из репозитория subversion или дождавшись версии 1.3.