@ (atop) 的 LHS 似乎适用于整个列表,就像 @: (at) NB 所做的那样。 +/@(*:@:mdev)
LHS of @ (atop) seems to be applied to the whole list as done with @: (at) NB. +/@(*:@:mdev)
在解释中:
n=.1 2 3 4
(+/@*:) n NB. 1 4 9 16
(+/@:*:) n NB. 30
在第一个中,总和 (+/
) 应用于方块 (*:
) 的每个单个结果,而在第二个中,总和应用于整个结果列表。到目前为止,一切都很好。但是下一个例子似乎不是那样工作的(可能是这样。我只是不明白):
mean=.+/%#
mdev=.-mean
(*:@:mdev) n NB. 2.25 0.25 0.25 2.25
ssq=.+/@(*:@:mdev)
ssq n NB. 5
+/@(*:@:mdev) NB. 5 - why not: 2.25 0.25 0.25 2.25
+/@:(*:@:mdev) NB. 5
在ssq
中括号表达式没问题。它按预期工作:(*:@:mdev) n
生成一个正方形列表。这里使用 @
或 @:
并不重要。我明白其中的区别。但是括号外的@
我的理解应该是(*:@:mdev)
.
结果的每一项求和(+/
)
谁能指教一下我的理解哪里不对?为什么 +/@(*:@:mdev)
中的第一个 @
应用于整个结果列表而不是 (+/@*:)
中的每个项目?
简短的回答是 u @: v y
将 u
应用于 v y
的整个结果,而 u @ v y
将 u
应用于 [= 的中间结果15=] 基于 v
的排名。
如 mean
之类的分叉和 mdev
之类的挂钩默认为无限等级,如果您未使用等级连词 ("
) 另行指定。
这意味着
+/
在 +/ @ (*: @: mdev)
和 +/ @: (*: @: mdev)
将与
具有相同的排名
*: @: mdev
这又将与 mdev
具有相同的等级,这意味着 @
将对整个结果起作用,即无限等级。
现在,看看示例 +/ @ *: n
,其中 *:
的等级为 0,它适用于原子(您可以在字典条目的顶部找到动词的等级,例如作为 *:
)
这意味着 @
规定 +/
应用于 n 的每个原子,从而导致您的列表 1 4 9 16
。
对于 +/ @: *:
,*:
的排名对 +/
没有影响,因为 @:
和 +/
应用于整个结果列表总和。
要获得更深入的参考,Henry Rich 的 J for C 程序员的第 12 章很好地涵盖了这个主题。 http://www.jsoftware.com/help/jforc/compound_verbs.htm#_Toc191734368
在解释中:
n=.1 2 3 4
(+/@*:) n NB. 1 4 9 16
(+/@:*:) n NB. 30
在第一个中,总和 (+/
) 应用于方块 (*:
) 的每个单个结果,而在第二个中,总和应用于整个结果列表。到目前为止,一切都很好。但是下一个例子似乎不是那样工作的(可能是这样。我只是不明白):
mean=.+/%#
mdev=.-mean
(*:@:mdev) n NB. 2.25 0.25 0.25 2.25
ssq=.+/@(*:@:mdev)
ssq n NB. 5
+/@(*:@:mdev) NB. 5 - why not: 2.25 0.25 0.25 2.25
+/@:(*:@:mdev) NB. 5
在ssq
中括号表达式没问题。它按预期工作:(*:@:mdev) n
生成一个正方形列表。这里使用 @
或 @:
并不重要。我明白其中的区别。但是括号外的@
我的理解应该是(*:@:mdev)
.
+/
)
谁能指教一下我的理解哪里不对?为什么 +/@(*:@:mdev)
中的第一个 @
应用于整个结果列表而不是 (+/@*:)
中的每个项目?
简短的回答是 u @: v y
将 u
应用于 v y
的整个结果,而 u @ v y
将 u
应用于 [= 的中间结果15=] 基于 v
的排名。
如 mean
之类的分叉和 mdev
之类的挂钩默认为无限等级,如果您未使用等级连词 ("
) 另行指定。
这意味着
+/
在 +/ @ (*: @: mdev)
和 +/ @: (*: @: mdev)
将与
具有相同的排名*: @: mdev
这又将与 mdev
具有相同的等级,这意味着 @
将对整个结果起作用,即无限等级。
现在,看看示例 +/ @ *: n
,其中 *:
的等级为 0,它适用于原子(您可以在字典条目的顶部找到动词的等级,例如作为 *:
)
这意味着 @
规定 +/
应用于 n 的每个原子,从而导致您的列表 1 4 9 16
。
对于 +/ @: *:
,*:
的排名对 +/
没有影响,因为 @:
和 +/
应用于整个结果列表总和。
要获得更深入的参考,Henry Rich 的 J for C 程序员的第 12 章很好地涵盖了这个主题。 http://www.jsoftware.com/help/jforc/compound_verbs.htm#_Toc191734368