只有在命令成功后,有没有办法在 Ltac 中打印(使用idtac
?)一条消息?就像是
first [ a; idtac "a did it!" | b; idtac "b did!" | idtac "nope"; fail ]
这几乎可以工作,除了多个子目标会导致打印多条消息:
Goal True /\ True.
split; idtac "Split did it!".
仅过滤第一个目标似乎有效......
Goal True /\ True.
split; [ idtac "Split did it!" | .. ].
...除非它没有:
Goal True /\ True.
tauto; [ idtac "Tauto did it!" | .. ].
我可能可以将这两种模式合二为一,但我不太热衷于 100% 的点球命中率。这仍然不能解决完全实现目标的策略的情况。
(我最感兴趣的是 8.5 之前的 Coq 的答案,因为在 8.5Info
和类似版本中为此提供了很好的设施。即使在 8.5 中,能够仅在某些点打印调试消息也会很有趣)