Question
Un avant-propos indique qu'il s'agit d'un devoir.Une question a déjà été posée pour la première question.Nous avons donc le type de données :
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)
On nous demande maintenant d'écrire la proposition
eval (PAnd (POr PTrue PFalse) PFalse)
qui devrait revenir BoolProp
false
Je ne sais juste pas comment procéder. Ptrue
Retour BoolProp true
cependant avec le type de données por
prend en deux Bool
ce n'est pas BoolProp
's.Peut-être que le type de données est erroné.Un avertissement serait génial
Je dois ajouter que le code eval est un extrait du code haskell
note:je l'ai édité pour ne pas tout dévoiler
La solution
La raison pour laquelle votre code ne se compile pas est que les crochets dans votre première section sont incorrects.Par exemple, pour Pand, ce devrait être comme Pand:∀ {PQ :Bool } → BoolProp P → BoolProp Q → BoolProp (P ∧ Q )
Changez cela et la deuxième partie devrait être compilée.J'ai eu exactement le même problème....
Autres conseils
Eh bien, je ne sais pas si ça va ou non et c'est juste pour la première partie si vous prenez sur l'évalue sur la dernière question, je ne sais pas.
Mais pour la première fois puisque la signature de type est
prop : BoolProp false
Je viens de rendre prop égal à l'instruction eval.Puisque l'instruction eval doit être égale à BoolProp.
donc
prop = (pand (por ptrue pfalse) pfalse)
Peut-être que c'est mal, je ne sais pas mais c'est CC CL et CC CN
et je suis heureux.