В предисловии обратите внимание, что это для задания. Вопрос по первому вопросу уже задан. Итак, у нас есть тип данных:
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)
Теперь нас просят написать предложение
eval (PAnd (POr PTrue PFalse) PFalse)
который должен вернуть BoolProp
false
Я просто запутался, как это сделать. Ptrue
возвращает BoolProp true
, однако с типом данных por
принимает два Bool
, а не BoolProp
. Возможно, тип данных неправильный. Любая голова будет здорово
Я должен добавить, что код eval является фрагментом кода haskell.
примечание: отредактировал, чтобы не выдавать все