Domanda

Sto solo cominciando a cercare di raccogliere il linguaggio J, e sono confuso dal seguente:

   1 2 +/@{ i.4
1 2
   +/ 1 2 { i.4
3

quando nella documentazione per @ dice: "x u @ v y ↔ u x v y"

Presumo sto solo scambiando una parte del discorso per un altro, ma non riesco a capirlo

Inoltre, come faccio a dire che tipo di discorso è un nome?

È stato utile?

Soluzione

   NB. u b. 0 returns the rank of u
   NB. the rank of a verb determines the arguments it applies to at a time
   NB. monadic + y applies to atoms; dyadic x + y applies to pairs of atoms
   + b. 0
0 0 0
   NB. monadic +/ y and dyadic x +/ y apply to anything (unbounded rank)
   +/ b. 0
_ _ _
   NB. monadic { y applies to arrays of atoms;
   NB. dyadic x { y applies to pairs of atoms and anything
   { b. 0
1 0 _
   NB. u @ v has the rank of v
   +/@{ b. 0
1 0 _
   NB. since 1 2 { i.4 returns atoms at a time, +/ works on atoms
   +/"0 [ 1 2 { i.4
1 2
   NB. u @: v has unbounded rank
   +/@:{ b. 0
_ _ _
   NB. +/ applies to all of 1 2 { i.4 at once
   +/"_ [ 1 2 { i.4
3

   NB. mechanical translation to tacit form
   13 : '+/ x { y'
[: +/ {

Altri suggerimenti

Wikipedia ha, a mio parere di parte, un interessante resoconto decente sulla classifica, e che cosa significa nel contesto delle diverse parti del "discorso" di J.

Ma per rispondere alla domanda iniziale, funzione di traccia di J può essere utile per capire come funziona la sua grammatica:

   require'trace'
   trace '1 2 +/@{ i.4'

Questo vi porterà passo per passo attraverso il processo di analisi, che mostra le parole di essere consumato da ogni regola di produzione e il risultato di ogni genera.

Ah, penso che forse ho capito, ho bisogno di usare @: al posto di @

   1 2 +/@:{ i.4
3

, che è quello che volevo. Presumo che sto andando a leggere un po 'di più sulla classifica, che è l'unica differenza tra @ e @:

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