【发布时间】:2014-08-19 17:42:46
【问题描述】:
是否允许在 Agda 记录望远镜内部使用类似 let 或 where 的子句,以便为望远镜引入本地定义?
This discussion 建议以下内容应该是合法的:
record _×_ (let ⋆ = Set) (A B : ⋆) : Set where
constructor _,_
field
fst : A
snd : B
This change request 描述的语法略有不同:
record _×_ (let ⋆ = Set in (A B : ⋆)) : Set where
constructor _,_
field
fst : A
snd : B
(问题标记为Accepted,好像有补丁,不知道有没有正式合并。)
但是 Agda 2.4.0.2 不接受其中任何一个。
在冒号之后,我似乎可以使用let,正如我所期望的那样:
record _×_ (A B : Set) : let ⋆ = Set in ⋆ where
constructor _,_
field
fst : A
snd : B
有什么原因我可以在记录声明的望远镜部分使用let(在给出它的索引时),但在给出它的参数时不能?
【问题讨论】: