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

Idris 2中`&`为何是保留符号?其具体用途是什么?

为什么无法在Idris 2中把&用作自定义运算符?

&是Idris 2语法中硬编码的保留符号,没有被纳入可自定义运算符的符号集合,所以你无法将它声明为自定义运算符使用。
它的具体用途有两个核心场景:

  • 线性类型参数的简写标记:用来声明线性绑定的参数,和1量化符功能等价。比如写法(&x : Int) -> String 完全等价于(1 x : Int) -> String,表示参数x是线性的,必须在函数体内恰好被使用一次。
  • 记录更新的上下文引用标记:在记录字段更新语法中,&用来指代当前正在被更新的记录实例,简化字段引用写法。比如你要更新记录r的count字段,原本需要写record { count = r.count + 1 } r,用&可以简化为record { count = &count + 1 } r,这里&count会自动解析为当前待更新记录的count字段。

你没在编译器源码的运算符定义、测试用例中找到相关说明的原因是,&的处理逻辑在词法分析、语法解析阶段的特殊字符分支中,不属于普通的运算符注册逻辑,也没有作为可重载符号出现在常规测试用例里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:15:03