Frage

Ich bin gerade erst zu versuchen, die J Sprache zu holen, und bin verwirrt durch die folgenden:

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

, wenn Sie in der Dokumentation @ heißt es: "x u @ v y ↔ u x v y"

Ich nehme an, ich bin zu verkennen nur einen Teil der Rede für einen anderen, aber kann es nicht herausgefunden

auch, wie kann ich feststellen, welche Art von Sprache ist ein Name?

War es hilfreich?

Lösung

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

Andere Tipps

Wikipedia hat, in meiner voreingenommenen Meinung, ein anständiges Zuschreibung auf Rang und was es bedeutet, im Rahmen der verschiedenen Teile von „Sprache“ in J.

Aber die ursprüngliche Frage zu beantworten, kann J Trace-Einrichtung nützlich sein, zu verstehen, wie seine Grammatik funktioniert:

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

Dadurch werden Sie Schritt für Schritt durch den Parsing-Prozess Schritt zeigt die Worte von jeder Produktionsregel verbraucht wird und das Ergebnis jeweils erzeugt.

Ach, ich glaube, ich habe es heraus kann, muss ich verwenden @: statt @

   1 2 +/@:{ i.4
3

Das ist, was ich wollte. Ich glaube, ich werde einige mehr auf Rang zu lesen bis haben, die zwischen @ und @ der einzige Unterschied ist:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top