根据文档,可以定义打印符号的格式: https://coq.inria.fr/refman/Reference-Manual014.html#sec530
但是,可以定义一个符号,例如:
Notation " '[[' a ']]' b " := (* something *).
目前尚不清楚两者是否可以相互作用。尝试:
format " '[hv' '[[' a ']]' ']' b "
例如,考虑到Coq,因为它期望方括号后跟,
v
和hv
之一。
到目前为止,我尝试过的任何其他类型的转义都让Coq拒绝格式,因为它与符号不匹配。
我不确定这可以做到......
答案 0 :(得分:2)
您的朋友在metasyntax:parse_format
https://github.com/coq/coq/blob/trunk/toplevel/metasyntax.ml#L102
正如您在代码中看到的那样,您的具体方案无法运行。我不知道是否会有某些特定的黑客,现在你不得不停止使用双括号。
我确信,Coq上游会考虑在[[
中添加parse_quoted
案例的补丁。
希望8.7会在这里带来一些改进,CEP#9试图建议将未解析替换/演变为真正的基于盒子的模型。