我正在尝试根据我在 Haskell 中编写的程序将一些指称语义编码到 Agda 中。
data Value = FunVal (Value -> Value)
| PriVal Int
| ConVal Id [Value]
| Error String
在 Agda 中,直接翻译是;
data Value : Set where
FunVal : (Value -> Value) -> Value
PriVal : ℕ -> Value
ConVal : String -> List Value -> Value
Error : String -> Value
但我收到与 FunVal 相关的错误,因为;
Value 不是严格正数,因为它出现在 Value 定义中构造函数 FunVal 类型中箭头的左侧。
这是什么意思?我可以在 Agda 中编码吗?我是不是走错了路?
谢谢。