我想使用Agda作为类型检查器和评估器来测试系统F中的一些定义。
我第一次尝试引入教会自然数是通过写作
Num = forall {x} -> (x -> x) -> (x -> x)
将与常规类型别名一样使用
zero : Num
zero f x = x
但是Num
的定义没有键入(种类?)检查。使它工作并尽可能接近系统F符号的最合适方法是什么?
答案 0 :(得分:2)
以下内容将进行类型检查
Num : Set₁
Num = forall {x : Set} -> (x -> x) -> (x -> x)
zero : Num
zero f x = x
但是如您所见Num : Set₁
,这可能会成为问题,您将需要--type-in-type