You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

J语言中Insert(fold)为何为右结合?如何实现左结合?

J语言-/结合性问题解答

问题重现

预期执行代码:

-/ 1 2 3 4
_8 NB. ((1-2)-3)-4

实际运行结果:

-/ 1 2 3 4
_2 NB. 1-(2-(3-4))

设计原因

J语言默认给二元运算符设定了右结合性,减法也不例外。这一设计是为了保持运算符语法的一致性——绝大多数二元运算符都遵循右结合规则,同时契合J的数组与函数式编程特性,让序列运算的逻辑更统一。

实现左结合减法

要得到你预期的左结合运算结果,有两种常用方法:

  • 使用左插入运算符-/::
    -/: 1 2 3 4
    _8 NB. ((1-2)-3)-4
    
  • 显式添加括号强制分组(适合元素数量较少的场景):
    ((1-2)-3)-4
    _8
    

手册对应内容

官方手册中,**插入运算符(Insert)和运算符优先级与结合性(Operator Precedence and Associativity)**章节对该问题有详细说明,可在官方学习手册中查阅这些部分。

内容的提问来源于stack exchange,提问作者Tom Huntington

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:42:04