Ich habe eine Notation definiert, um imperative Style-Programmierung durch
zu simulieren %Vor%Danach werden jedoch alle Ausdrücke der Funktionsanwendung als '& gt; & gt;' Stil. Zum Beispiel kann ich im Beweismodus von Coq Toplevel
sehen %Vor%während es eigentlich
sein sollte %Vor%Warum überschreibt Coq aggressiv alle Ausdrucke, die in der Funktion Anwendung verwendet werden, in meine angepasste '& gt; & gt;' Repräsentation? Wie kann ich alles wieder normal wiederherstellen, ich meine ich will 'a & gt; & gt; b "wird als" b a "interpretiert und" list nat "wird nicht als" nat & gt; & gt; " Liste '?
Danke!
Standardmäßig geht Coq davon aus, dass Sie beim Ausdrucken einer Notation das Pretty-Printing verwenden möchten. Wenn Sie möchten, dass die Notation niemals im Pretty-Printing erscheint, deklarieren Sie sie als "nur Parsing".
%Vor% Wenn a >> b
manchmal angezeigt werden soll, können Sie es auf einen Bereich beschränken und einen Typ diesem Bereich zuordnen. dann wird die Notation nur angewendet, wenn der Ergebnistyp von diesem Typ ist.
Es gibt keine Möglichkeit, Coq zu sagen, "benutze die Notation nur dort, wo ich sie in meinem Quellcode benutzt habe", weil ein mit einer Notation geschriebener Term genauso ist wie der anders geschriebene: die ursprünglich verwendete Notation nicht Teil des Begriffs.
Sie könnten stattdessen eine Definition verwenden. Auf diese Weise würden nur Dinge, die Sie als "foldedBy" markieren, auf diese Weise verdinglicht. Andernfalls kann die Maschine nicht wissen, wann sie ein Leerzeichen im Vergleich zu "& gt; & gt;" verwenden soll ...
%Vor%Tags und Links coq