有时,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,
答案 0 :(得分:4)
缺少空格。正确地:
x = In (false , In (true , tt))
Agda说true,
不在范围内;请注意,
。 Agda将大多数无空间字符序列视为单个标记是很奇怪的,但通常也很有用。