在列表上组成加法和除法动词

rea*_*ble 3 j

如果data =: 3 1 4frac =: % +/,为什么% +/ data导致0.125frac data导致0.375 0.125 0.5

921*_*214 6

%+/ 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)