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

18. Явные Определения

Предложения (выполненные для примера в предыдущем разделе о разбиении на слова):
   m=: '3 %: y'
   d=: 'x %: y'
могут быть использованы с союзом явно : для производства глагола:
   script=: 0 : 0
3 %: y
:
x %: y
)

   roots=: 3 : script
   roots 27 4096
3 16

   4 roots 27 4096
2.27951 8
Наречия и союзы тоже можно определять явно. Например:
   table=: 1 : 0
[ by ] over x/              Глаголы by и over из Раздела 3
)
  
   2 3 5 ^ table 0 1 2 3
+-+----------+
| |0 1  2   3|
+-+----------+
|2|1 2  4   8|
|3|1 3  9  27|
|5|1 5 25 125|
+-+----------+
Кроме того, в явных определениях можно использовать управляющие конструкции. Например:

f=: 3 : 0              
if. y<0
  do. *:y
  else. %:y
end.
)
                 
   f"0 (_4 4)    
16 2                 
factorial=: 3 : 0
a=. 1
while. y>1
do. a=. a*y
y=. y-1 end. a
)

   factorial"0 i. 6
1 1 2 6 24 120

Упражнения

18.1   Поэкспериментируйте и отобразите функции roots=: 3 : script и 13 : script (они эквивалентны).

18.2   См. обсуждение управляющих конструкций в словаре. Используйте их для определения дальнейших глаголов.

18.3   Поэкспериментируйте с выражениями вида ! d b=: i.7 , определив наречие d как:
d=: 1 : 0
+:@x
)
18.4   Используя программу pol из Упражнения 14.2, проведите следующие эксперименты и прокомментируйте их результаты:

g=: 11 7 5 3 2 & pol
e=: 11 0 5 0 2 & pol
o=:  0 7 0 3 0 & pol
(g = e + o) b=: i.6
(e = e@-) b
(o = -@o@-) b
Ответ: Функция g есть сумма функций e и o . Более того, функция e четная (ее график симметричен относительно вертикальной оси), а o — нечетная (ее график симметричен относительно начала координат).

18.5   Просмотрите Раздел H Главы II и используйте сценарии для написания других явных определений.

18.6   Введите следующее явное определение наречия even (четно) и проведите с ним эксперименты, используя функции, определенные в предыдущем упражнении:
even=: 1 : 0
-:@(x f. + x f.@-)
)
ge=: g even
(e = ge) b
(e = e even) b
18.7   Определите наречие odd (нечетно) и используйте его в следующих экспериментах:
exp=: ^
sinh=: 5&o.
cosh=: 6&o.
(sinh = exp odd) b
(sinh = exp .: -) b            Примитивное наречие "нечетно" .: -
(cosh = exp even) b
(exp = exp even + exp odd) b
18.8   Следующие эксперименты используют комплексные числа. Тем, кто с ними не знаком, вероятно, следует эти эксперименты пропустить:
sin=: 1&o.
cos=: 2&o.
(cos = ^@j. even) b
(j.@sin = ^@j. odd) b



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