Pregunta
Un prólogo tenga en cuenta que esto es para una tarea.Una pregunta ya ha sido preguntado acerca de la primera pregunta.Así que tenemos el tipo de datos:
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)
Ahora estamos pidiendo a escribir la proposición
eval (PAnd (POr PTrue PFalse) PFalse)
que debe devolver BoolProp
false
Apenas estoy consiguiendo confundido acerca de cómo hacer esto. Ptrue
devuelve BoolProp true
sin embargo, con el tipo de datos por
toma en dos Bool
no s BoolProp
's.Tal vez el tipo de datos que está mal.Cualquier heads up sería genial
Debo agregar que el código eval es un fragmento de código del código haskell
nota:editado para no regalar todo
Solución
La razón por la que su código no es compilar es porque el horquillado en su primera sección es incorrecta.Por ejemplo, para pand debe ser como pand :∀ { P Q :Bool } → BoolProp P → BoolProp Q → BoolProp (P ∧ Q )
Cambiar eso y la segunda parte debe compilar.Yo tenía exactamente el mismo problema....
Otros consejos
bueno, yo no sé si es correcto o no y esto es sólo para la primera parte si su toma acerca de la evaluación en la última pregunta, no lo sé.
Pero para la primera parte, ya que el tipo de firma es
prop : BoolProp false
Acabo de hacer la proposición equivalente a la instrucción eval.Desde la evaluación de la declaración debe ser igual a BoolProp.
así
prop = (pand (por ptrue pfalse) pfalse)
tal vez sea malo, no lo sé pero C-c C-l y C-c C-n
y estoy feliz.