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 Boolce 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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top