我正在观看一个讲座,讲师说这是不可能的,或者至少很难在Agda中定义Pi类型。但我确信必须有办法。给定Universe中的类型以及从类型到Universe的族,从类型到族中某些类型的任何函数都将是Pi类型。所以我认为使用lambda是有意义的:
data Pi (A : Set) (B : A -> Set) : Set where
\ (a : A) -> (b : B a) : Pi A B
当我尝试加载它时,它会给我一个解析错误。我不确定为什么,也许它不希望\
成为一个类型构造函数,但将lambda视为函数类型的类型构造函数是有意义的。请注意,我在Emacs中使用Agda的乳胶功能,但我不认为我可以在堆栈溢出中编写乳胶。话虽这么说,我尝试用大写的lambda替换小写lambda,看看它是否需要一个独特的类型构造函数,但无济于事。
答案 0 :(得分:2)
在: Pi A B
中修复拼写错误后,你可以使用大写的lambda,即
data Pi (A : Set) (B : A -> Set) : Set where
Λ : ((a : A) -> B a) -> Pi A B