gpt4 book ai didi

j - @ (atop) 的 LHS 似乎适用于整个列表,就像 @ : (at) NB. +/@(*:@:mdev) 所做的那样

转载 作者:行者123 更新时间:2023-12-04 10:52:35 24 4
gpt4 key购买 nike

在解释中:

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 yu 应用于 v y 的整个结果,而 u @v y 根据 v 的等级将 u 应用于 v 的中间结果。

mean 之类的 fork 和如 mdev 之类的 Hook 默认为无限等级,如果您未使用 Rank 连词 (") 另行指定)。

这意味着

+/+/@(*:@:mdev)+/@:(*:@:mdev)

将具有与

相同的排名

*: @: mdev

这又将与 mdev 具有相同的排名,这意味着 @ 将处理整个结果,即无限排名。

现在,查看示例 +/@ *: n,其中 *: 的等级为 0 并且它适用于原子(您可以在原语的字典条目顶部​​,例如 *:)

这意味着 @ 规定 +/ 应用于 n 的每个原子,从而导致您的列表 1 4 9 16

对于 +/@: *: *: 的排名对 +/ 没有影响,因为 @:+/ 应用于整个结果,即列表的总和。

要获得更深入的引用,Henry Rich 的 J for C programmers 的第 12 章很好地涵盖了这个主题。 http://www.jsoftware.com/help/jforc/compound_verbs.htm#_Toc191734368

关于j - @ (atop) 的 LHS 似乎适用于整个列表,就像 @ : (at) NB. +/@(*:@:mdev) 所做的那样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52669068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com