等价的默认表达式
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
我是 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