Вопрос

Предисловие обратите внимание, что это для назначения.Вопрос уже задан вопрос о первом вопросе.Таким образом, у нас есть тип данных:

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 принимает два генеракодицетагкода не генеракодицетагкод.Может быть, тип данных не так.Любые головы были бы здоровы

Я должен добавить, что код EVAL - это фрагмент из кода Haskell

Примечание: вдали его, чтобы не отдавать все, что

Это было полезно?

Решение

Причина, по которой ваш код не компитен, заключается в том, что брекетинг в вашем первом разделе неверно. Например, для падения это должно быть похоже Pand: ∀ {p q q: bool} → boolprop p → boolprop q → boolprop (p ∧ q)

Изменить, что и вторая часть должна компилировать. У меня было точно такая же проблема ....

Другие советы

Ну, я не знаю, если это правильно или нет, и это только для первой части Если вы принимаете в Eval на последний вопрос, я не знаю.

Но для первой части, поскольку тип подписи составляет

prop : BoolProp false
.

Я только что сделал опоры равен оператору Eval. Поскольку оператор EVAL должен быть равен BoLProp.

Так

prop = (pand (por ptrue pfalse) pfalse)
.

Может быть, это неправильно, я не знаю Но это C-C C-L и C-C C-N

и я счастлив.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top