Frage
Ein Vorwort Beachten Sie, dass dies für eine Aufgabe ist.Für die erste Frage wurde bereits eine Frage gestellt.Wir haben also den Datentyp:
data BoolProp : ??? where
ptrue : BoolProp true
pfalse : BoolProp false
pand : (P Q : Bool) -> (BoolProp P) -> (BoolProp Q) -> BoolProp (P ??? Q)
por : (P Q : Bool) -> (BoolProp P) -> (BoolProp Q) -> BoolProp (P ??? Q)
pnot : (P : Bool) -> BoolProp (not P)
Jetzt werden wir gebeten, den Vorschlag zu schreiben
eval (PAnd (POr PTrue PFalse) PFalse)
was sollte zurückkehren BoolProp
false
Ich bin nur verwirrt darüber, wie das geht. Ptrue
zurückgeben BoolProp true
allerdings mit dem Datentyp por
nimmt zwei auf Bool
ist nicht BoolProp
ist.Möglicherweise ist der Datentyp falsch.Jeder Kopf hoch wäre großartig
Ich sollte hinzufügen, dass der Bewertungscode ein Ausschnitt aus dem Haskell-Code ist
beachten:habe es bearbeitet, um nicht alles wegzugeben
Lösung
Der Grund, warum Ihr Code nicht kompiliert wird, liegt darin, dass die Klammer in Ihrem ersten Abschnitt falsch ist.Zum Beispiel sollte es für pand so aussehen pand :∀ { Pq :Bool } → BoolProp P → BoolProp Q → BoolProp (P ∧ Q )
Ändern Sie das und der zweite Teil sollte kompiliert werden.Ich hatte genau das gleiche Problem....
Andere Tipps
nun, ich weiß nicht, ob es richtig ist oder nicht und das ist nur für den ersten Teil wenn Sie über die Bewertung der letzten Frage nachdenken, weiß ich nicht.
Aber für den ersten Teil seit der Typensignatur ist
prop : BoolProp false
Ich habe gerade Requisite gleich der eval Aussage gemacht.Da die eval-Anweisung gleich BoolProp sein sollte.
so
prop = (pand (por ptrue pfalse) pfalse)
vielleicht ist es falsch, ich weiß nicht aber es ist K-k K-l und CCNC
und ich bin glücklich.