Что представляет собой «совместимую форму» для аргументов массива для глаголов J? - PullRequest
4 голосов
/ 11 января 2012

Я нахожусь в процессе обучения (и меня утомляет) J, и я читаю Learning J .Я заметил, что многие (все?) Глаголы, которые я изучал, довольно гибки в своих аргументах.Я могу сделать традиционный 4 - 2, или я могу использовать его со списками, например 4 5 - 3 4, и даже могу сделать 3 4 5 - 1, который, кажется, "продвигает" правую часть оператора в массив, хотя я только что далэто скаляр.

Я предполагаю, что последнее поведение охватывается этой строкой из гл.2 вышеупомянутого текста:

Следовательно, два аргумента = должны иметь одинаковые формы (или, по крайней мере, как в примере Y = 2, совместимые формы).В противном случае возникает ошибка.

Действительно, 3 4 5 - 2 3 является ошибкой.Каково техническое определение «совместимой формы»?Это так же просто, как «той же формы или скаляр», или есть что-то еще?

1 Ответ

5 голосов
/ 11 января 2012

со страницы словаря B. Глаголы :

Соглашение. В фразе p v q аргументы v должны совпадать в ощущение, что один кадр должен быть префиксом другого

Так что все следующее будет работать

  (i. 2 3) * (i. 2 3 4)     NB. frame of left arg is prefix of the right arg
  (i. 2) * (i. 2 3 4)       NB. frame of left arg is prefix of the right arg
  (i. 2 3 4) * (i. 2 3)     NB. frame of right arg is prefix of the left arg

Формальное определение frame см. На странице словаря A. Существительные

Я бы рекомендовал этот раздел J для программистов на C в качестве подробного описания этих концепций.

...