废话“不在范围内”错误

时间:2018-09-13 13:41:51

标签: agda

有时,Agda会给我胡说八道的“不在范围内”错误,这使我不知道该怎么办。这是一个示例:

open import Data.Product
open import Data.Bool
open import Data.Unit

postulate
  μ    : (Set → Set) → Set
  In   : {F : Set → Set} → F (μ F) → μ F
  unIn : {F : Set → Set} → μ F → F (μ F)

NatT : Set
NatT = μ λ x -> Σ Bool (λ { true -> ⊤; false -> x })

x : NatT
x = In (false , In (true, tt))

此人抱怨true不在范围内。考虑到x = In (true, tt)工作正常,这甚至很奇怪。为什么会这样?

Not in scope:
  true, at /Users/v/agda/mu.agda:14,21-26
    (did you mean
       'Bool.true' or
       'Data.Bool.Bool.true' or
       'Data.Bool.true' or
       'true'?)
when scope checking true,

1 个答案:

答案 0 :(得分:4)

缺少空格。正确地:

x = In (false , In (true , tt))

Agda说true,不在范围内;请注意,。 Agda将大多数无空间字符序列视为单个标记是很奇怪的,但通常也很有用。