如果data =: 3 1 4和frac =: % +/,为什么% +/ data导致0.125但frac data导致0.375 0.125 0.5?
%+/ 3 1 4 是“总和,然后找到该总和的倒数”,即:
+/ 3 1 4
8
% 8 NB. same as 1%8
0.125
Run Code Online (Sandbox Code Playgroud)
但是如果你定义了frac =: %+/,那么%+/就变成一组两个独立于它们的参数(又名默认定义)的动词,也就是一个钩子:
(%+/) 3 1 4
0.375 0.125 0.5
Run Code Online (Sandbox Code Playgroud)
其中读作“总和,然后将原始向量除以该总和”:
+/ 3 1 4
8
3 1 4 % 8
0.375 0.125 0.5
Run Code Online (Sandbox Code Playgroud)
如果您想像frac第一个示例中那样运行,则需要使用显式定义:
frac =: 3 : '%+/y'
frac 3 1 4
0.125
Run Code Online (Sandbox Code Playgroud)
或者组合%and +/,例如在顶部连词或巧妙使用二元叉和带帽左分支:
%@(+/) 3 1 4
0.125
([:%+/) 3 1 4
0.125
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |