1

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

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

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

u ^: x y

等价于这个表达式:

x u @] ^: [ y

我会感谢任何 J 程序员解释这两者是如何等价的。

4

1 回答 1

1

我认为看这个的方法是把默示表达看成由两个动词andu@] ^: [的连词构成的动词。将采用右参数(排除左参数)并应用to的单子形式。将使用左参数作为将提供重复次数的值作为 的运算符。^:u@][u@]yuy[xu^:

对于显式版本,u ^: x y[and]动词替换为其相关的左右参数,并且因为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
于 2019-07-22T03:08:44.507 回答