等价的默认表达式

Equivalent tacit expressions

我是 J 编程语言的新手,我对 J 中的等效默认表达式有疑问。

我发现有两行 J 是等价的,但是代码中的连词 (^:) 的参数使用括号运算符进行了切换。

我主要是想知道这个表达式如何:

u ^: x y

相当于这个表达式:

x u @] ^: [ y

如果 J 程序员能解释这两者是等价的,我将不胜感激。

我认为看待这个问题的方法是将默认表达 u@] ^: [ 看成一个由两个动词 u@] 和 [=] 之间的连词 ^: 构成的动词14=]。 u@] 将采用右参数 y(排除左参数)并将 u 的单子形式应用于 y[ 将使用左参数 x 作为值,该值将提供 u 的重复次数作为 ^: 的运算符。

对于显式版本,u ^: x y[] 动词替换为其相关的左右参数,因为 x 是 [=12 的运算符=] , u ^: x 实际上是一个以 y 作为参数的单子动词。

让我们设置

   a=. 3
   b=. 4
   vb =. +: NB. double
   vb ^: a b
32
   a vb @] ^: [ b
32
   a (vb @] ^: [) b NB. expression within parenthesis is clearly a verb
32