%+/ 3 1 4
- это «сумма, затем найдите обратную величину этой суммы», то есть:
+/ 3 1 4
8
% 8 NB. same as 1%8
0.125
Но если вы определите frac =: %+/
, тогда %+/
станет группой из двух глаголов, изолированных от их аргументы (также известные как неявное определение), то есть хук :
(%+/) 3 1 4
0.375 0.125 0.5
который читается как «сумма, затем разделите исходный вектор на эту сумму»:
+/ 3 1 4
8
3 1 4 % 8
0.375 0.125 0.5
Если вы хотите, чтобы frac
вел себя, как в первом примере, вам нужно либо использовать явное определение:
frac =: 3 : '%+/y'
frac 3 1 4
0.125
, либо составить %
и +/
, например, с на вершине соединение или умное использование диади c вилка с закрытая левая ветвь:
%@(+/) 3 1 4
0.125
([:%+/) 3 1 4
0.125