【问题标题】:A missing type signature error in Agda which I do not know how to avoidAgda 中缺少类型签名错误,我不知道如何避免
【发布时间】:2019-11-10 22:17:42
【问题描述】:

我在 emacs 的文件 trial_agda.agda 中有以下代码:

module trial_agda where

data ???? : Set where
 zero : ????
 suc  : ???? → ????
 _+_ : ???? → ???? → ????

zero + n = n
(suc n) + n′ = suc (n + n′) 

它产生

/Users/myname/trial_agda.agda:8,1-13
Missing type signature for left hand side zero + n
when scope checking the declaration
  zero + n = n

有什么问题?

【问题讨论】:

    标签: agda agda-mode


    【解决方案1】:

    问题已通过在suc: ? → ? 之后留出一行来解决。在提到这个例子的http://learnyouanagda.liamoc.net/pages/peano.html#fn1 中,没有提到在讨论这个例子的地方应该有这样的差距。

    【讨论】:

    • 您需要真正了解这里发生了什么以及为什么需要这个差距:之所以需要它是因为_+_ 不是自然数的构造函数,而是一个以 2 个自然数作为参数的函数.接下来的几行定义了这个函数应该如何根据它的第一个输入的结构来表现。如果您愿意并且想要更精确一些,我可以将此评论作为答案。
    • 重要的是缩进级别:_+_ : ? → ? → ? 行中的第一个_ 必须与data 中的d 垂直对齐,以便_+_ 被认为是自己的定义在trial_agda 模块中。一般来说,where 块的缩进级别由其中的第一个定义确定。
    猜你喜欢
    • 1970-01-01
    • 2020-06-27
    • 2013-10-30
    • 2014-03-26
    • 1970-01-01
    • 2019-04-28
    • 2019-05-08
    • 2016-09-18
    • 1970-01-01
    相关资源
    最近更新 更多