首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Agda给出错误"expected:ℕ,actual:ℕ“

为什么Agda给出错误"expected:ℕ,actual:ℕ“
EN

Stack Overflow用户
提问于 2018-06-07 22:47:28
回答 1查看 153关注 0票数 1

当我写下面的函数是agda时,

代码语言:javascript
复制
f : (A : Set) → (a : A) → ℕ
f ℕ n = n

我希望错误提示我没有指定所有的情况。

相反,我得到了这个错误:

代码语言:javascript
复制
Type mismatch:
expected: ℕ
actual: ℕ
when checking that the expression n
has type ℕ

这里发生什么事情?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-08 05:17:32

使用较新版本的Agda (我使用的是2.5.4),您会得到一个更具信息性的错误:

代码语言:javascript
复制
ℕ !=< ℕ of type Set
(because one is a variable and one a defined identifier)
when checking that the expression n has type ℕ

问题是函数定义的模式(在等号的左边)只能包含构造函数、变量和点模式,而不能包含之类的类型。由于不是一个有效的模式,Agda假定它是一个名为Set类型的新变量,从而掩盖了自然数的实际类型。现在这个错误是有意义的,因为n的类型(即变量的 )不等于预期的返回类型(即自然数的类型)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50744196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档