gpt4 book ai didi

language-design - J 的 # 运算符 : why not reversed?

转载 作者:行者123 更新时间:2023-12-04 07:13:45 26 4
gpt4 key购买 nike

过去几周我一直在研究 J,真正困扰我的是 # 运算符的二元情况:我使用它的唯一方法类似于以下内容:

(1 p: a) # a

如果反过来,括号可以省略:

a #~ 1 p: a

为什么选择不接受当前论点的反面?向后熟悉 APL,还是我完全忽略的东西?

最佳答案

一般来说,J 的原语被设计为在右边取“主要数据”,在左边取“控制数据”。

“主要”数据和“控制”数据之间的区别并不明显,但通常人们会认为“主要”数据比“控制”数据变化更频繁。也就是说,人们会期望“控制”数据比“主要”数据更不可能被计算。

该设计选择的原因正如您所指出的:因为如果更可能计算的数据(而不是预先固定的)出现在右侧,那么更多的 J 短语可以表示为简单的火车或动词流水线,没有过多的括号(假定 J 从左到右执行)。

现在,在#的情况下,哪个数据更有可能被计算出来?您 100% 正确地认为过滤器(或掩码)很可能被计算出来。但是,要过滤的数据几乎可以确定要计算。例如,您的 a 是从哪里得到的?

QED。

PS:如果你的 a 可以通过一些 J 动词来计算,如 a=: ... ,那么你的整个结果,过滤器和所有,都可以是用 primeAs =: 1&p: # ... 表示。

PPS:注意那里的 1&p:。这是“控制”与“主要”的另一个例子:1 是控制数据——你可以分辨出来,因为它永远绑定(bind)到 p:——而且它是固定的。因此,巧合的是,p: 被设计为将其作为 left 参数。

PPPS:这个“控制数据出现在左边”的概念有很多不同的表达方式。您可以在此处找到资深 Jers 解释的汇总:http://www.jsoftware.com/pipermail/general/2007-May/030079.html .

关于language-design - J 的 # 运算符 : why not reversed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23573346/

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