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

Явное Определение m : n  _ _ _  

Здесь m — целое, обозначающее следующие варианты:
 
0 : n   существительное
1 : n наречие
2 : n союз
3 : n глагол
4 : n только диадный глагол
13 : n если возможно, неявное представление глагола, иначе как 3 : n
n обычно 0, что обозначает ввод сценария (Раздел II H) с клавиатуры; в качестве n можно задать представление сценария в виде текстового списка s , упаковочного списка b=: <;._2 s , или текстовой таблицы t=: ];._2 s . Таким образом:

f=: 3 : 0
a=: 2+b=. y ^ 2
a+a*b
:
x*x+y
)

   a=: b=: 19
   f 3
110

   a,b           NB. Изменилось только глобально присвоенное имя.
11 19
Как показано далее:

1.    При использовании 3 : 0 , строка, состоящая из одного двоеточия, отделяет определения монадного и диадного случаев. Если такой строки нет, область определения диадного случая пуста.
2. Результатом явного определения является результат его последнего предложения, выполненного не в тестовом блоке; в случаях 3 : и 4 : этим результатом должно быть существительное. Cм. Управляющие Конструкции для определения блока.
3. Присвоенные =. имена являются локальными; их новые значения не производят никакого эффекта как вовне данного определения, так и внутри других, вызванных им определений. Имена, присвоенные =: , являются глобальными (глобальное присваивание локальных имен не допускается). Присваивание локативов (с использованием =: или =.) всегда глобально.
4. Аргументы определения инициализируются =. . Для диадного случая это подобно:
  f=: 4 : 0
   x=. (левый   аргумент)
   y=. (правый аргумент)
   (остаток глагола)
  )
5. Имена x и y обозначают левый и правый аргументы. В определении союза можно ссылаться как на его левый и правый аргументы (используя u и v), так и на аргументы получающегося в результате его применения глагола (x и y ); подобно, в определении наречия можно ссылаться как на его левый аргумент (используя u), так и на аргументы производимого глагола (x и y). Используя m вместо u (или n вместо v) можно ограничить класс соответствующего аргумента существительным. Например:
   conj=: 2 : '(u y)+ (v y)'
   mc=: 2 : 0
(u y)+(v y)
)

   dc=: 2 : 0                 Диадный случай
:
(u y)+(v x)
)

   (!conj% 2 4 5);(!mc% 2 4 5);(1 2 3 !dc% 2 4 5)
+---------------+---------------+--------------+
|2.5 24.25 120.2|2.5 24.25 120.2|3 24.5 120.333|
+---------------+---------------+--------------+
Управляющие Конструкции. Последовательность исполнения предложений явного определения может быть изменена при помощи ключевых слов, таких как if. do. else. end. и while. . Например, глагол, находящий корень функции f по заданному двух-элементному списку чисел (локализующих корень), может быть определен и выполнен как:
   root=: 3 : 'm=.+/%#while.~:/y do.if.~:/*f b=.(m,{.)y do.y=.b else.y=.(m,{:)y end.end.m y'

   f=: 2 - *:
   b=: 1 10
   root b
1.41421
Для читабельности, это определение можно разбить на нескольких строк. Например так:
root=: 3 : 0
 m=. +/ % #
 while. ~:/y do.
  if. ~:/*f b=. (m,{.) y do.
   y=. b
  else.
   y=. (m,{:) y
  end.
 end.
 m y
)

Как видно из этого примера, слово if. и соответствующее слово end. отмечают начало и конец управляющей конструкции, так же как соответствующие while. и end. . Как иллюстрирует конструкция if. внутри конструкции while. , управляющие конструкции могут быть вложены. Слова do. и else. делят конструкцию if. на три простых блока, каждый из которых является предложением; а do. в конструкции while. делит ее на два блока: первый является простым предложением, а второй сам по себе является управляющей конструкцией if. . Таким образом, ключевые слова являются видом пунктуации.

Более детальное описание и примеры можно найти в разделе Управляющие Конструкции.




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