如果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 次 |
最近记录: |