Почему правый глагол] возвращает значение, а не левый глагол [? - PullRequest
0 голосов
/ 20 декабря 2018

J новичок здесь.

Глагол right ] дает среднее значение для возврата результата присваивания.Я предполагаю, что x =: 1 вычисляется и имеет значение 1, а затем оно передается в ], который возвращает значение правильного аргумента (или, может быть, это ], который заставляет присвоение иметь значение).

   ] x =: 1
1
   x
1

Но он не работает с left [.Это почему ?Я подумал, что достаточно поставить x =: 1 слева от [.В чем разница между ними обоими?

   x =: 1 [
|syntax error
|   x=:    1[

Более того, когда мы оцениваем приведенное ниже выражение, на консоли обратной связи нет, назначения выполняются без вывода сообщений.Почему это?

   x =: i.10 [ n =: 2
   x
0 1 2 3 4 5 6 7 8 9
   n
2

1 Ответ

0 голосов
/ 20 декабря 2018

При применении монадически (т. Е. Только с правильным аргументом) оба значения [ и ] являются глаголом То же , который просто возвращает свой аргумент без изменений.Причина, по которой x =: 1 [ является синтаксической ошибкой, заключается в том, что вы пытаетесь оценить [ двоично (то есть с двумя аргументами) только с левым аргументом.

Вывод в последнем примере связан спорядок оценки - в J это происходит справа налево.Это означает, что x =: i.10 [ n =: 2 совпадает с x =: (i. (10 [ (n =: 2))) и оценивается следующим образом:

  1. n =: 2, т. Е. n присваивается значение 2, затем результат используется в следующемглагол
  2. 10 [ n, т.е. 10 слева n, что составляет всего 10
  3. i.10, то есть 0 1 2 3 4 5 6 7 8 9
  4. x =: 0 1 2 3 4 5 6 7 8 9

На консоли ничего не напечатано, потому что последнее действие - это назначение.Здесь вы можете использовать [ или ] (монадически), чтобы напечатать окончательный результат в дополнение к назначению, то есть

    ] x=: i.10 [ n =: 2
0 1 2 3 4 5 6 7 8 9
...