Domanda
Una prefazione nota che questo è per un incarico.È già stato chiesto una domanda per la prima domanda.Quindi abbiamo il tipo di dati:
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)
.
Ora ci viene chiesto di scrivere la proposizione
eval (PAnd (POr PTrue PFalse) PFalse)
.
che dovrebbe restituire BoolProp
false
Sto solo confondendo su come farlo.Ptrue
restituisce BoolProp true
Tuttavia con il tipo di dati por
accetta in due generatori di Bool
non generacodicitagCode.Forse il tipo di dati è sbagliato.Qualsiasi testata sarebbe fantastica
Dovrei aggiungere che il codice EVAL è uno snippet dal codice Haskell
Nota: la modifica per non dare tutto via
Soluzione
Il motivo per cui il tuo codice non è la compilazione è perché la bracketing nella prima sezione non è corretta. Ad esempio, per PAND dovrebbe essere come PAND: ∀ {P D: BOOL} → BOOLPROP P → BOOLPROP q → boolprop (p ∧ q)
Modifica che e la seconda parte dovrebbe compilare. Ho avuto esattamente lo stesso problema ....
Altri suggerimenti
beh non so se è giusto o no e questo è solo per la prima parte Se stai prendendo in considerazione la valutazione sull'ultima domanda, non so.
Ma per la prima parte dal momento che la firma del tipo è
prop : BoolProp false
.
Ho appena fatto PROP uguale alla dichiarazione EVAL. Dal momento che la dichiarazione di eval dovrebbe essere uguale a boolprop.
SO
prop = (pand (por ptrue pfalse) pfalse)
.
Forse è sbagliato, non so ma c-c c-l e c-c c-n
E sono felice.