Seu primeiro exemplo usa a notação convencional do APL "del" para definir uma função. Os dois segundos exemplos usam definição direta (comumente conhecida como DFNS - Dee -Fun -FUNS), que é uma extensão do Dyalog APL e, obviamente, não é executado no intérprete que você está usando. A facilidade de definir funções dessa maneira é uma grande vantagem.
Pergunta
estou usando GNU APL 1.1 (svn 4460)
no Linux 2.6.32
E eu tenho alguns problemas com as definições de função.
Este trecho funciona conforme o esperado:
∇R←ODD N
R←2|N
∇
(ODD L)/L←⍳10
Mas quando eu tento isso
{2|⍵} 5
ou isto
ODD←{2|⍵}
Eu recebo um erro de sintaxe. Os mesmos trechos funcionam bem aqui.
Eu sou um iniciante completo da APL. Alguém poderia me explicar o que causa esse erro de sintaxe?
Solução
Outras dicas
A sintaxe DFNS (fragmento de função nos aparelhos encaracolados) não é suportada por todos os APLs. Se não for suportado, espere um erro de sintaxe ou erro nonce.
Que eu saiba, apenas Dyalog APL e NGN APL (veja http://ngn.github.io/apl/web/) apoie isso.
A Sharp APL tinha um recurso de definição direta, mas a sintaxe era bastante diferente.
O NGN APL não suporta definição de função herdada, apenas DFNS.
GNU APL agora tem um suporte para esses DFNs; Você pode experimentá -lo compilando -o no repositório de subversão ou aguardando a versão 1.3.