Domanda

sto usando GNU APL 1.1 (svn 4460) su Linux 2.6.32 E ho alcuni problemi con le definizioni delle funzioni.

Questo frammento funziona come previsto:

∇R←ODD N
R←2|N
∇

(ODD L)/L←⍳10

Ma quando provo questo

{2|⍵} 5

o questo

ODD←{2|⍵}

Ricevo un errore di sintassi. Gli stessi frammenti funzionano bene qui.

Sono un principiante completo di APL. Qualcuno potrebbe spiegarmi cosa causa questo errore di sintassi?

È stato utile?

Soluzione

Il primo esempio utilizza la notazione APL "del" convenzionale per definire una funzione. I secondi due esempi usano la definizione diretta (comunemente nota come DFNS - pronunciata Dee -Funs) che è un'estensione di Dyalog APL e ovviamente non funziona nell'interprete che stai usando. La facilità di definire le funzioni in questo modo è un grande vantaggio.

Altri suggerimenti

La sintassi DFNS (frammento di funzione nella sintassi delle parentesi graffe) non è supportata da tutti gli APL. Se non è supportato, aspettatevi un errore di sintassi o un errore nonce.

Per quanto ne sappia, solo Dyalog APL e NGN APL (vedi http://ngn.github.io/apl/web/) supportalo.

APL affilato aveva una funzione di definizione diretta ma la sintassi era piuttosto diversa.

NGN APL non supporta la definizione della funzione legacy, solo DFNS.

GNU APL ha ora un supporto per tali DFN; È possibile provarlo compilandolo dal repository di sovversione o attendere la versione 1.3.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top