我对 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