>>  <<  Ркв  Ввд  JfC  LJ  Фрз  Слв  Изм  Рзг  !:  Помощь  Словарь

B. Глаголы

Монады и Диады. Глаголы имеют два определения: одно для монадного случая (один аргумент), другое для диадного (два аргумента). Диадное определение применяется если перед глаголом стоит подходящий левый аргумент (тоесть существительное, не являющееся аргументом союза), иначе применяется монадное определение.

Монадный случай глагола называется так же монадой, потому мы говорим о монаде % в выражении %4 , и о диаде % в 3%4 . Оба случая данного глагола могут (в т.ч. и одновременно) иметь пустую область определения.

Ранги Глаголов. Понятие ранга глагола тесно связано с понятием ранга существительного: глагол ранга k применяется к каждой k-ячейке своего аргумента. Например (используя массив b из Раздела A):
   ,b
abcdefghijklmnopqrstuvwx

   ,"2 b                         ,"_1 b
abcdefghijkl                  abcdefghijkl
mnopqrstuvwx                  mnopqrstuvwx
Поскольку глагол разобрать (обозначаемый ,) применяется к своему аргументу целиком, его ранг считается неограниченным. Союз с рангом " , использованный в выражении ,"2 , создает производный глагол ранга 2, разбирающий каждую из 2-ячеек и дающий результат размерности 2 на 12.

Размерность результата есть остов (относительно ячеек, к которым глагол применяется) с присоединенной к нему размерностью результата применения глагола к каждой ячейке. Обычно, эти индивидуальные размерности (результатов для всех ячеек) совпадают. Но если нет, они сначала приводятся к общему рангу, добавлением единичных измерений в начало размерности результатов меньшего ранга, а затем выравниваются до общей размерности, добавлением соответствующих элементов заполнителя: пробелов для текстовых массивов, 0 для числовых, и пустых упаковок для упаковочных. Например:
   i."0 s=: 2 3 4                >'I';'was';'here'
0 1 0 0                       I
0 1 2 0                       was
0 1 2 3                       here
Диадному случаю глагола соответствуют два ранга, относящиеся к его левому и правому аргументам. Например:
   p=: 'abc'
   q=: 3 5$'wake read lamp '
   p,"0 1 q
awake
bread
clamp
Каждый глагол имеет три внутренних ранга: монадный, левый (диадный) и правый (диадный). Определение любого глагола должно задать его поведение на ячейках внутренних рангов (обобщение на аргументы более высокого ранга производится автоматически). Фактически, ранги глагола являются верхним пределом ранга ячеек, к которым он может быть применен, но его область определения может включать и аргументы меньшего ранга. Например, Обратить Матрицу (%.) имеет монадный ранг 2, но работает с векторами, как с матрицами из одного столбца.

Соответствие. В выражении p v q, аргументы v должны соответствовать друг другу, в том смысле, что один остов должен быть префиксом другого, как для p,"0 1 q выше, и в следующих примерах:
   p ,"1 1 q                     3 4 5*i. 3 4
abcwake                        0  3  6  9
abcread                       16 20 24 28
abclamp                       40 45 50 55

   (i.3 4) * 3 4 5
 0  3  6  9
16 20 24 28
40 45 50 55
Если остов содержит 0, глагол применяется к ячейке, составленной из атомов заполнителя. Например:
   ($ #"2 i. 1 0 3 4);($ 2 3 %"1 i. 0 2)
+---+---+
|1 0|0 2|
+---+---+

   ($ $"2 i. 1 0 3 4);($ 2 3 %/"1 i. 0 4)
+-----+-----+
|1 0 2|0 2 4|
+-----+-----+


>>  <<  Ркв  Ввд  JfC  LJ  Фрз  Слв  Изм  Рзг  !:  Помощь  Словарь