j - 等效的默契表达式



我对 J 编程语言相当陌生,我对 J 中的等效隐式表达式有疑问。

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

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

u ^: x y

等效于此表达式:

x u @] ^: [ y

我希望任何 J 程序员解释这两者是如何等价的。

我认为看待

这个问题的方法是将隐性表达u@] ^: [视为由两个动词u@][之间的连^:形成的动词。 u@]将采用右参数y(排除左参数(并将一元形式的u应用于y[将使用 left 参数 x 作为值,该值将提供作为 ^: 运算符的u重复次数。

对于显式版本,u ^: x y用其关联的左参数和右参数替换[动词和]动词,并且由于x^:的运算符,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

相关内容

  • 没有找到相关文章

最新更新