如何解决Agda中自定义语法声明的规则是什么?
Agda docs在DELIMITER //
CREATE TRIGGER Add_Interval
BEFORE INSERT ON verification
FOR EACH ROW
BEGIN
SET new.datevalid = new.datecreated + INTERVAL 5 MINUTE;
END;
//
DELIMITER ;
声明中实际上没什么要说的,而且粗略浏览源代码并不能说明问题,因此我一直在尝试自己使用标准库中的示例,例如syntax
和Σ[_]_
。我可以很容易地复制一个像他们一样的(公认的,人为的)例子
∃[_]_
但是当我尝试定义绑定两个变量的自定义语法时,会出现错误
twice : {A : Set} → (A → A) → A → A
twice f x = f (f x)
syntax twice (λ x → body) = twice[ x ] body
具体地说,
swap : {A B C : Set} → (A → B → C) → B → A → C
swap f y x = f x y
syntax swap (λ x y → body) = swap[ x,y ] body
因此,我假设在Parse error
y<ERROR>
→ body) = swap[ x,y ] body
...
声明的左侧有一些允许的规则。这些规则是什么,其中哪些规则禁止我在上面使用两个变量的lambda形式?
解决方法
当前,Agda不允许使用多参数Lambda抽象的语法声明。这是一个已知的限制,有关相应的增强请求,请参见issue tracker。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。