我对 J 编程语言相当陌生,我对 J 中的等效默认表达式有疑问。
我发现两行 J 是等价的,但是代码 ( ^:
) 的参数中的连词是使用括号运算符切换的。
我主要是想知道这个表达方式:
u ^: x y
等价于这个表达式:
x u @] ^: [ y
我会感谢任何 J 程序员解释这两者是如何等价的。
我对 J 编程语言相当陌生,我对 J 中的等效默认表达式有疑问。
我发现两行 J 是等价的,但是代码 ( ^:
) 的参数中的连词是使用括号运算符切换的。
我主要是想知道这个表达方式:
u ^: x y
等价于这个表达式:
x u @] ^: [ y
我会感谢任何 J 程序员解释这两者是如何等价的。
我认为看这个的方法是把默示表达看成由两个动词andu@] ^: [
的连词构成的动词。将采用右参数(排除左参数)并应用to的单子形式。将使用左参数作为将提供重复次数的值作为 的运算符。^:
u@]
[
u@]
y
u
y
[
x
u
^:
对于显式版本,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