我定义了这种表示法:
Definition Id (n:nat):= n.
Notation "'ID' { n } ":= (Id n) (no associativity, at level 99).
哪种方法效果很好。现在我想添加格式来更改换行符和对齐方式。假设我想打印这样的东西:
ID
{ n }
所以我尝试了以下符号:
Notation "'ID' { n } ":= (Id n) (no associativity, at level 99,
format "'ID' '//' { n } ").
在哪种情况下我得到
警告:标识符“{”开头的字符“{”无效。
那么我应该如何使用{?
来定义格式答案 0 :(得分:3)
只需从格式中删除花括号:
Definition Id (n : nat) := n.
Notation "'ID' { n } " := (Id n)
(no associativity, at level 99,
format "'ID' '//' n " ).
Check (ID { 4 }).
我不确定这是故意还是错误。但是,正如Coq user's manual所说,花括号{ }
在符号中具有特殊状态,并且与其他类型的括号区别对待。因此,如果您想对[ ]
执行相同的操作,则需要在格式中包含括号:
Definition Id (n : nat) := n.
Notation "'ID' [ n ] " := (Id n)
(no associativity, at level 99,
format "'ID' '//' [ n ] " ).
Check (ID [ 4 ]).