gpt4 book ai didi

j - 是否有可能编写一个 J 程序,该程序使用基于执行时值的一元或二元形式的动词?

转载 作者:行者123 更新时间:2023-12-02 01:43:48 25 4
gpt4 key购买 nike

很酷3 * 4结果 12 , 和 * 4结果 1 ,但是对两个操作使用相同的原语是否会带来好处?例如,假设我要定义以下内容:

SIGNUM =: * : [:
TIMES =: [: : *

如果我只使用 SIGNUMTIMES而不是 * ,我会不会错过 * 的巧妙使用? ?即 x TIMES y似乎与x * y完全一样对于每个 x我可以想象(尽管在这方面我的想象力非常有限)。有没有x其中 x * y产生与 SIGNUM y 相同的结果?

万一* : [:不是很清楚,下面应该说明:

   SIGNUM =: * : [:
TIMES =: [: : *
SIGNUM 4
1
3 TIMES 4
12
* 4
1
3 * 4
12
3 SIGNUM 4
|domain error: SIGNUM
| 3 SIGNUM 4
TIMES 4
|domain error: TIMES
| TIMES 4

最佳答案

让我们根据评论写下结论:

没有直接的语言级原因不使用原语名称

使用名称而不是原语但是会损害性能,如special code不一定会被触发。我认为这可以通过在使用 f. 构建动词后修复动词来解决。

一元动词和二元动词具有相同名称的原因是历史原因:APL 以前使用过它。大多数动词在一元/二元版本和变形(许多尾随点和冒号)中都有相关的 Action 。

例如,^ 可以用传统符号表示为 pow(x,y)exp(y) 其中 x 和 y是左右参数,e 是欧拉常数。在这里,monadic 版本与 dyadic 版本相同,具有合理的默认左参数。同一词根的不同变形都是与权力相关的动词: - ^. 计算对数(monad 以 e 为底) - ^: 执行幂连词,将动词应用可变次数。

monadic 和 dyadic 动词之间还可以存在其他关系,例如 $ 可以说是获取或设置数组的 Shape,这取决于它是用作 monad 还是 dyad。

也就是说,我认为一旦对 J 有了一些经验,就可以更容易地根据动词所用的句子来识别动词的配价。示例是:

Monad @ Ambiv NB. Mv is always used monadically, Av depends on arguments
Ambiv & Monad
(Dyad Monad) NB. A hook, where verb 1 is always dyadic
(Ambiv Dyad Ambiv) NB. A fork, the middle is one always dyadic

关于j - 是否有可能编写一个 J 程序,该程序使用基于执行时值的一元或二元形式的动词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26852243/

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