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

Agda中Lambda表达式隐式参数的推理问题求解

问题解决方法

你遇到的错误根源是类型签名写法有误:{ℕ}在Agda中会被解析为名字为ℕ的隐式参数(而非类型为ℕ的隐式参数),这导致f的类型被推断为「接收一个未知类型的隐式参数后返回自然数类型ℕ」,但你赋值的λ {n} → n是一个「接收隐式参数并返回该参数」的函数,二者类型不匹配。

在保留Lambda抽象的前提下,有两种规范的解决方式:

方式一:明确隐式参数的类型与名字

将类型签名中的隐式参数明确标注为类型是ℕ的参数,再用Lambda绑定该参数:

f : {n : ℕ} → ℕ
f = λ {n} → n

方式二:省略隐式参数的名字(用通配符)

如果不需要使用参数名字,可用通配符_指定隐式参数的类型,Lambda中绑定任意名字即可:

f : {_ : ℕ} → ℕ
f = λ {x} → x

不推荐的写法(仅作参考)

若你坚持要保留{ℕ}的写法(会和自然数类型名ℕ混淆,不推荐),可将其指定为类型是ℕ的参数名,Lambda中绑定同名参数:

f : {ℕ : ℕ} → ℕ
f = λ {ℕ} → ℕ

内容的提问来源于stack exchange,提问作者דניאל פ.ח.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 05:39:56