Pergunta

Eu estou apenas começando a tentar pegar a linguagem J, e estou confuso com o seguinte:

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

quando na documentação para @ diz: "x u @ v y ? u x v y"

Eu suponho que eu só estou confundindo uma parte do discurso para outro, mas não consigo entender

Além disso, como posso dizer que tipo de discurso um nome é?

Foi útil?

Solução

   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'
[: +/ {

Outras dicas

Wikipedia tem, na minha opinião tendenciosa, um writeup decente no ranking, eo que isso significa no contexto das diferentes partes de "discurso" em J.

Mas, para responder à pergunta original, facilidade de rastreamento de J pode ser útil para a compreensão de como sua gramática funciona:

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

Isto irá levá-lo passo a passo através do processo de análise, mostrando as palavras que estão sendo consumidos por cada regra de produção eo resultado de cada gera.

Ah, eu acho que pode ter percebi isso, eu preciso usar @: em vez de @

   1 2 +/@:{ i.4
3

que é o que eu queria. Acho que vou ter que ler um pouco mais sobre classificação, que é a única diferença entre @ e @:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top